Authentication 通过RSA密钥进行ssh双重身份验证

Authentication 通过RSA密钥进行ssh双重身份验证,authentication,ssh,Authentication,Ssh,假设您有一个客户机C和一个服务器s 机器C使用ssh连接到服务器S,使用RSA密钥启用无密码连接。所以C拥有他的私钥,并把公钥给了S 鉴于此,我可以使用RSA密钥来认证S吗?我想每次C尝试在ssh中连接到S时,都可以确定他真的是在和S说话。所以就像证书X509一样,但使用RSA密钥 如果我没有错,那会是双重认证吗 谢谢实际上,每次服务器向客户端发送自己的公钥时,当您第一次连接到服务器时,您都会收到密钥的指纹,并决定是否信任他。我无法理解您的问题。你能详细说明一下吗 让我向您简要介绍一下SSH连接

假设您有一个客户机C和一个服务器s

机器C使用ssh连接到服务器S,使用RSA密钥启用无密码连接。所以C拥有他的私钥,并把公钥给了S

鉴于此,我可以使用RSA密钥来认证S吗?我想每次C尝试在ssh中连接到S时,都可以确定他真的是在和S说话。所以就像证书X509一样,但使用RSA密钥

如果我没有错,那会是双重认证吗


谢谢

实际上,每次服务器向客户端发送自己的公钥时,当您第一次连接到服务器时,您都会收到密钥的指纹,并决定是否信任他。

我无法理解您的问题。你能详细说明一下吗

让我向您简要介绍一下SSH连接

客户端连接到服务器

客户端请求服务器标识。这可以通过各种公钥算法来实现 例如: ssh rsa、ssh dsa等是公钥格式类型 x509v3 ssh rsa、x509v3 ssh dsa等是证书格式类型

公钥算法支持上述所有格式

仅供参考:证书只是带有所有权信息的公钥

现在,服务器将其标识公钥或证书发送给客户端

客户端验证它

如果可以,则服务器询问客户机标识

根据SSH协议,可以通过公钥、密码、键盘交互等方法完成

现在对于无密码方法,公钥是正确的方法。 这里的公钥是方法名。内部支持许多公钥和证书方法,与上述方法相同

然后,客户端选择publickey方法并以publickeyssh rsa或。。。或证书Ex509v3 sshrsa或。。。到服务器

服务器将验证此标识

如果一切正常,则允许用户使用SSH登录


我希望这能澄清你的疑问。

哦,是的,这是真的。。。因此,您可以比较密钥的指纹和密钥本身来确定?而且,不管怎样,是否有可能像我所描述的那样获得双重身份验证?如果我很清楚,您所说的第一步,客户端询问服务器身份,是由Nickolay在其回答中提到的第一次连接时收到的指纹完成的吗?根据您提到的问题。////假设您有一个客户机C和一个服务器s。机器C通过ssh连接到服务器s,使用RSA密钥来启用无密码连接。因此C拥有他的私钥,并将公钥交给了S上面的过程是用于用户身份验证的。如果这样,我可以使用RSA密钥来认证吗?我想每次C尝试在ssh中连接到S时,都可以确定他真的是在和S说话。所以就像证书X509一样,但使用RSA密钥?如果我没有错的话,这将是双重身份验证上面的过程是用于服务器身份验证的,我也不能理解这一部分。考虑到这一点,我可以使用RSA密钥来认证S吗?是的,实际上我缺乏SSH服务器拥有自己的RSA密钥priv和pub的事实。这是用于获取指纹的公钥,指纹在第一次连接时呈现给客户端。您是对的,一个密钥对用于用户身份验证,正如我在问题的第一部分所描述的,一个密钥对用于服务器身份验证。我错过了最后一部分