远程用户使用SSH通过互联网连接到我们主要办公室的多个服务。 SSH密码与其LAN A / D帐户同步。
如果用户使用类似CD或纸张的方式将SSH密钥的副本带回家,比使用户input密码更安全? 或者我应该同时需要?
我的问题可能会重新制定如下:SSH的密码authentication协议是否存在漏洞?
正是这个信息让我怀疑:
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:. Are you sure you want to continue connecting (yes/no)?
您看到的消息是一个单独的问题。 这是要求你确认你连接的主机真的是你期望的那个。 从服务器,您可以通过运行ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub来获取指纹。 然后,当您第一次远程连接时,您可以确保指纹匹配。
在这里看到的主机密钥,解决了中间人攻击的问题 – 也许DNS被颠覆了,而且你正在连接到竞争对手的机器,而不是你自己的机器。 该机器收集您的凭据,并透明地将您的连接转发到真实的服务器,窃取您的信息,而不知道。 确保主机密钥匹配,防止这种情况发生,除非攻击者实际上已经窃取了你的服务器的公钥。
但问题仍然存在 – 你怎么知道哪个键是正确的? 第一次连接后,公钥存储在~/.ssh/known_hosts文件中,所以后续的连接都可以。 但是,第一次,你需要一些带外获取指纹的方式,否则你会遵循“TOFU”模式:首先使用信任。
但是这与密码和密钥之间没有任何关系,除了密钥和密码都可以通过这种攻击被窃取 – 从某种意义上说,这是您要求的漏洞。
有(至less)三个原因密码比关键:
此外,使用ssh-agent时,ssh密钥提供了方便 – 您无需每次重新validation都可以轻松进行连接,同时仍然保持合理的安全性。
要求两者都没有明显的优势,因为有足够的访问权限窃取私钥也可以很容易地窃取用户的密码。 如果您需要更多安全性,请考虑查看双因素身份validation系统,如RSA SecurID或WiKID 。
你真正要问的是“比一个更好的因素之一”,这个话题是多因素authentication,而且确实build议你研究一下这个话题。
通常一个“因素”是你知道的(密码),你拥有的东西(ssh文件或钥匙刷卡),或者你是(指纹)的东西。
一个本身并不比一个更好,他们是免费的。 丢失一个CD的密钥文件是一样糟透露你的密码,如果这是你所需要的。 对于安全的环境来说,双因素authentication是很常见的。