2015-10-21 57 views
1

当我们ssh给一个主持人时,他或者不认识。在后一种情况下,我们首先尝试连接,我们被提示为以什么格式存储在已知主机中的服务器的公钥?

主机'13x.8x.xx.1x1(13x.8x.xx.1x1)'的真实性无法建立。 RSA密钥指纹是xx:xx:xx:xx:xx:26:86:80:5f:17:xx:xx:xx:xx:6d:6c。 您确定要继续连接(是/否)吗?是

然后服务器的RSA公钥存储在.ssh/know_hosts文件中。它是如何编码的?我们如何确保这不是一个中间人?最后,这个所谓的“主机密钥”是不对称的。这是什么意思?

回答

2

我们如何确保这不是一个中间人?

第一次,您可以检查RSA指纹。有人需要事先传达给你,或者你需要以某种方式安全地接收它(即通过https站点发布,或通过签名的电子邮件接收)。例如,许多托管提供商向您发送您的主机SSH指纹。

在Ubuntu,你可以使用你找到自己的RSA指纹:

ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub 

注意,还有其他在使用指纹识别的格式(DSA和ECDSA),根据不同的服务器和客户端配置。在您的known_hosts文件中,您可以看到每个指纹的存储格式。

它是如何编码的?

known_hosts文件是base64编码中的主机名(通常是主机名散列),指纹类型和指纹本身(密码信息)的列表。格式详细信息可在OpenSSH man page,SSH_KNOWN_HOSTS FILE FORMAT部分中找到。

这个所谓的“主机密钥”是不对称的。这是什么意思?

这些不对称机制意味着虽然指纹允许您验证服务器的身份,但不能用它来生成有效标识(模拟)该服务器。

必须指出的是,指纹(和相应的私钥)作为秘密加密操作:随机挑战从客户端发送到服务器。具有私钥的服务器可以签名表示挑战并将其发回,然后客户端可以验证签名是有效的,因为指纹是合适的。

换言之,加密秘密是双重的,私钥可以加密或签名,并且公钥可以用于解密或验证签名。其中一个密钥可以在没有风险的情况下公开发布,并用于验证签名和密文只有私钥所有者才能解码的文本。这大致是密码学中的不对称手段。

相关问题