当我使用 ssh/sftp 登录到新机器(或从新机器登录)时,系统会提示我“这是一串随机的十六进制数字;我应该相信它吗?”这个问题。而且,由于我面前从来没有正确的东西来判断签名是否正确,我通常会考虑正在使用的网络并据此做出决定——也许甚至在没有实际登录的情况下接受签名,然后将其与在其他机器/登录名 .ssh 目录中找到的应该相同的签名进行比较。
如果我为我的“新”目标机器获取 SSL 证书(例如,网络上众多供应商之一提供的 4.99 美元证书之一),我是否可以使用它来使过程更安全/更轻松(例如,“您是否要相信这台机器就是它所说的那个机器”提示会消失吗)?或者这两者(SSL 和 ssh/sftp)完全不相干?
答案1
不,SSH 不使用 SSL 协议,也不使用 X.509 证书。
此外,即使它确实如此,您也需要通过 SSH 登录才能安装SSL 证书到您的服务器,这会让整个意义落空 —— 至少在“当我登录到一台新机器时”的情况下。
如果您经常设置新服务器,请编写一个脚本,从多个不同位置查询给定服务器的指纹(例如,使用pssh
和ssh-keyscan
)。如果所有位置都看到相同的指纹,那么一切正常。
如果您经常从不受信任的计算机连接,请选择其中一台服务器作为“网关”,记下它的指纹,并将其放在您的钱包/手机/其他地方;然后仅通过该服务器进行所有连接。
附注:OpenSSH 6.x做有自己的证书格式,但它不与现有的 X.509 PKI 集成,并且仅支持一个级别的“权限”,因此仅在从已配置的客户端连接到已设置的服务器时才有用。
同样的缺点 - 需要明确配置 - 也适用于 OpenSSH 对通过 DNSSEC 验证指纹的支持。
最后,确实存在一些在 SSH 中使用 X.509 的补丁 - 一个由美国国防部使用,一个由 Globus Toolkit (GSI-SSH) 使用,可能还有其他补丁 - 但它们都存在与上述完全相同的问题:只有在大型组织中部署时才会变得更加自动化。尝试在家中设置 GSI-SSH 不会为您节省任何时间,只会浪费更多时间。