当我使用ssh登录时,git如何知道我是谁?

use*_*784 4 ssh github

我按照以下说明为github设置了SSH登录名,尽管它可以工作,但我无法弄清楚它为什么工作:https : //help.github.com/articles/generating-ssh-keys/

我对SSH的理解如下:客户端创建一个密钥对,客户端将公用密钥提供给服务器,并且当客户端要登录时,他使用其私钥加密服务器选择的消息,以证明自己确实是客户端。

现在:我将我的公钥XXX上传到Github。当我执行“ ssh -T git@github.com”时,Github必须知道我正在尝试以我的身份登录,以便他可以使用XXX解密我的消息,对吗?所以ssh必须发送该信息...但是ssh如何知道有关Github的信息,或者我的用户名是什么?而且,如果我有多个密钥对-ssh将使用哪个密钥?

小智 5

将SSH公钥添加到GitHub帐户时,会将其与GitHub帐户相关联。

默认情况下,该命令ssh -T git@github.com搜索id_dsaid_rsa文件。要确认这一点,请尝试ssh -T git@github.com -v

如果您有与不同的github帐户关联的密钥,则必须使用-i进行指定以使用不同的帐户。 ssh -T git@github.com -i /path/to/mykey


Jak*_*uje 4

简而言之:

  1. SSH客户端发送公钥到服务器
  2. 服务器根据公钥(唯一)找到你的名字,但需要验证你是否也有私钥,因此他向你发送一些消息
  3. 您的客户使用您的私钥签署该消息
  4. 服务器验证签名,如果有效,则允许您访问

这是基于公钥加密技术,特别是数字签名技术(谷歌了解更多详细信息)。