文档章节

SSH协议的基础知识

GIS土匪
 GIS土匪
发布于 01/05 16:28
字数 1078
阅读 95
收藏 0

精选30+云产品,助力企业轻松上云!>>>

背景

因为一些原因,把github.io重新在github搭建一下,但是hexo deploy去提交代码的时候,发生代码提交失败的情况。原来在GIS90.github.io Repository上没有进行Deploy keys的配置,导致push失败。

配置好Deploy keys的配置,代码成功提交,但是为何配置完key就可以成功提交呢?原理是SSH协议

定义

The SSH protocol uses encryption to secure the connection between a client and a server. All user authentication, commands, output, and file transfers are encrypted to protect against attacks in the network. For details of how the SSH protocol works, see the protocol page. To understand the SSH File Transfer Protocol, see the SFTP page.

The SSH protocol (also referred to as Secure Shell) is a method for secure remote login from one computer to another. It provides several alternative options for strong authentication, and it protects the communications security and integrity with strong encryption. It is a secure alternative to the non-protected login protocols (such as telnet, rlogin) and insecure file transfer methods (such as FTP).

直接摘录了官网的原话,不多说了直接捞干的,大概意思就是说SSH协议是一种连接服务器的一种简单、安全、可靠的连接方法

验证方式

目前,后端开发、运维等工作中经常需要登录远程服务并操作,常用的连接方式都是ssh,方式如下:

ssh 用户名@IP
ssh 用户名@机器名

使用ssh登录的时候,验证方式主要有2种:

密码验证

使用用户名和密码进行登录,两者匹配才可以登录,但是密码认证有以下的缺点:

  • 密码泄漏。一个帐户多个人进行使用,需要让所有使用人都知道密码,很容易密码泄露。
  • 另外,多账户使用修改密码时必须通知所有人,否则就会造成其他人登录失败。

公钥验证

使用公钥、私钥的方式就行验证。保证了多个用户可以通过各自的密钥登录到服务器,互不干扰,而且认证也可以允许使用空密码,省去每次登录都需要输入密码的麻烦。

配置

通过sh-keygen命令进行生成公钥私钥,下面详细说明。

1、执行ssh-keygen -t rsa命令。 通过ssh-keygen --help可知,-t是加密的参数,最常用。除了rsa,还有dsa、ecdsa、ed25519,其中rsa是安全的加密方式。

2、输入要生成的文件名,默认回车即可。

3、输入密码,默认回车即可。

4、输入确认密码,,默认回车即可。

5、出现下列图案代表成功。

+--[ RSA 2048]----+
|    .+=*..       |
|  .  += +        |
|   o oo+         |
|  E . . o        |
|      ..S.       |
|      .o .       |
|       .o +      |
|       ...oo     |
|         +.      |
+-----------------+

具体的ssh-keygen参数可以通过ssh-keygen --help进行查看,这里不作详解。

原理讲解

  1. 定义

    这里主要针对于公钥私钥的验证方式进行讲解,通过执行ssh-kengen命令可以得到公钥、私钥,都是经过加密后的文件。 公钥:能被其他人知道的加密文件,id_rsa.pub。 私钥:只能自己知道的加密文件,id_rsa。

    只要私钥不被泄漏,就不会出现任何指定用户登录的问题。

  1. 流程图

  1. 验证流程

    1、Client通过ssh-keygen命令生成公钥和私钥。

    2、Client将自己的公钥id_rsa.pub存放到Server服务器上的认证文件。

    3、Client通过ssh命令将用户、IP发送请求连接指定的服务器。

    4、Server收到到请求之后,先去authorized_keys中进行查找是否有指定的用户,如果有将进行下一步,无此用户拒绝验证连接。

    5、验证文件中包含指定用户,Server将生成一个随机字符串通过*公钥进行加密,发送给Client。

    6、Client接收到Server加密的字符串,利用私钥进行解密,解密后在将这个随机字符串再发送给Server。

    7、Server接收到Client发送的解密字符串与生成的原始随机字符串进行比对,如果正确就让客户端登录,否则拒绝。

学习参考

SSH官网:https://www.ssh.com/ssh/

GIS土匪
粉丝 1
博文 16
码字总数 9630
作品 0
海淀
私信 提问
加载中
请先登录后再评论。
Linux学习方法

如果您是非计算机相关专业零基础兄弟,在学习Linux编程基础之前,建议先学习计算机基础、Linux操作系统基础知识和计算机网络基础知识。 计算机基础知识包括了很多常识性的内容,学了不一定有...

C语言实战
04/22
0
0
学习Linux编程前的准备

如果您是非计算机相关专业零基础兄弟,在学习Linux编程基础之前,建议先学习计算机基础、Linux操作系统基础知识和计算机网络基础知识。 计算机基础知识包括了很多常识性的内容,学了不一定有...

C语言实战
04/19
0
0
Linux学习方法

如果您是非计算机相关专业零基础兄弟,在学习Linux编程基础之前,建议先学习计算机基础、Linux操作系统基础知识和计算机网络基础知识。 计算机基础知识包括了很多常识性的内容,学了不一定有...

osc_r0irdqn7
04/26
10
0
【给初学者】Android学习路线

很多朋友都对学习路线问题感到迷茫,特别是还在上学的朋友们。在这里就详细的为大家介绍一下。 1.Java基础很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Jav...

一别经年
2014/02/07
2
0
java网络编程之套接字TCP

套接字学习 什么是套接字? 计算机网络基础知识 基于套接字的网路编程案例? 什么是套接字? 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程 序通常通过"...

osc_bgoqj0sj
2019/02/14
2
0

没有更多内容

加载失败,请刷新页面

加载更多

PG库实现 t+1 同步

需求:业务场景中有很多需要查询t+1的数据,但又不想影响生产实时的业务,是否可以搭建一个延时的灾备库就可以解决这个问题呢。 问题:如何实现延时? 解决方向:recovery_min_apply_delay ...

易野
41分钟前
17
0
jpgraph 实例文档

下载 在官方网站http://www.aditus.nu/jpgraph/ 下载jpgraph,其中1.X系列是用于PHP4的,2.X系列是用于PHP5的。 安装 将下载的得到的jpgraph压缩文件解压至相应的路径。 配置 首先需要注意的...

osc_2ch77h9m
42分钟前
9
0
画IDC状态趋势图

[背景]公司以前对IDC状态的测试都是通过perl+crond结合,向指定某IDC的IP发送icmp包,并将其结果保存到test.log下,对于后斯的分析,是采取手工的方式(格式化数据,结合excel),这样操作下...

osc_moibnxyj
42分钟前
13
0
整理性能计数器注释

[前话]收集性能计数器注释,以备使用! [内容] 1 % Processor Time (Processor _Total) 指处理器用来执行非闲置线程时间的百分比。计算方法是,度量处理器用来执行空闲线程的时间,然后用 10...

osc_5nscij7v
44分钟前
12
0
你想要的WinForm界面开发教程在这里 - 如何设置较厚的表格边框

下载DevExpress v20.1完整版 DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。想要体验?点击下载>> 应用程序的外观随时代发展不断变化,自厚...

FILA6666
44分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部