ssh配置原理

当服务器SSH服务启动,客户端也安装了SSH后,就可以进行连接了。

客户端向服务端发送连接请求。
客户端连接服务器有两种方式:1. 密码登录。2. 密钥登录。
客户端通过SSH工具连接服务端。相关信息通过明文发送,发送的请求包括IP地址和用户名,服务器识别对应的客户端公钥(保存在$HOME/.ssh/authorized_keys中),找到该公钥后,服务器通过公钥加密一段随机字符串,并使用共享密钥加密后发送给客户端。如果未找到公钥,则需要输入密码。

服务端返回公钥信息
根据客户端所使用的服务协议版本及算法设置,返回相应公钥信息。比如,默认情况下,客户端通过 SSH V2 版协议,基于 RSA 算法建立连接,则服务端将 ssh_host_rsa_key.pub 文件中的内容返回客户端。相关信息通过明文发送。

客户端对服务端公钥信息进行比对和确认

客户端接收到服务端公钥信息后,会进行如下比对,并让用户对相关信息进行确认。

  • 如果用户输入 no ,则连接中断并报错(Host key verification failed)。
  • 如果用户输入 yes,则会将相应的公钥信息,保存到当前用户家目录下 .ssh 目录内的 known_hosts 文件中。

如果服务端因重装系统等因素导致公钥指纹出现变化,则会直接导致连接失败(报错Host key verification failed),则需要删除已保存的条目后再重新连接。
如果之前已经成功连接,而且公钥指纹对比一致,则会继续下一步操作。
Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey®,然后将加密后信息发送给Client。

Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。

Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。

Server端会最后比较Digest1和Digest2是否相同,完成认证过程


 

后续登录校验及正常的数据传输,都会通过双向加密方式进行。相关交互说明如下:

如果服务端需要发送数据给客户端:
服务端使用所持有的客户端公钥,对需要传输的数据进行加密,再发送给客户端。
客户端收到信息后,使用所持有的自身私钥解密后获取数据。
如果客户端需要发送数据给服务端,也是类似的流程:
客户端使用所持有的服务端公钥,对需要传输的数据进行加密,再发送给服务端。
服务端收到信息后,使用所持有的自身私钥解密后获取数据。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在GitHub上配置SSH公钥,您可以按照以下步骤进行操作: 1. 首先,确保您已经生成了SSH密钥对。您可以使用命令`ssh-keygen`来生成密钥对。\[1\] 2. 检查是否已经存在SSH密钥。您可以使用命令`ls -al ~/.ssh`来查看是否存在`id_rsa`和`id_rsa.pub`这两个文件。\[1\] 3. 如果不存在SSH密钥,您可以使用命令`ssh-keygen -t rsa -b 4096 -C "your_email@example.com"`来创建新的SSH密钥。在这个命令中,将`your_email@example.com`替换为您在GitHub上注册的电子邮件地址。\[1\] 4. 获取SSH公钥的内容。您可以使用命令`cat ~/.ssh/id_rsa.pub`来查看公钥的内容。\[1\] 5. 复制SSH公钥到GitHub。登录到GitHub账号,点击右上角的头像,选择"Settings",然后选择"SSH and GPG keys"。点击"New SSH key",将之前获取到的公钥内容粘贴到"Key"字段中,并为该密钥提供一个描述性的标题。最后,点击"Add SSH key"按钮保存配置。\[1\] 6. 验证是否设置成功。您可以使用命令`ssh -T git@github.com`来验证是否成功连接到GitHub。如果您看到一条欢迎消息,表示您已成功配置SSH公钥。\[1\] 需要注意的是,SSH密钥的配置是针对每台主机的。如果您在不同的主机上操作GitHub,您需要在每台主机上重新配置SSH密钥。\[2\]配置SSH公钥的目的是为了实现无密码登录,方便在GitHub上进行操作而无需每次输入账号密码。\[3\] #### 引用[.reference_title] - *1* [github ssh密钥配置](https://blog.csdn.net/inthat/article/details/109406553)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Github配置ssh key的步骤(大白话+包含原理解释)](https://blog.csdn.net/weixin_42310154/article/details/118340458)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值