这不是一个技术问题,而是一个概念问题。我知道 SSH 密钥中使用的加密技术比常规密码强得多,但我不明白为什么它被认为更安全。
我读过的大多数教程都建议使用 SSH 密钥身份验证,而不是密码身份验证。但我的理解是,任何有权访问预先批准的客户端计算机的人都可以连接到服务器,这意味着 SSH 密钥提供的安全级别仅与物理客户端计算机的安全级别一样强。
例如,如果我在手机上设置了 SSH 密钥以连接到我的家用机器,如果我的手机丢失并且有人设法解锁它,他们将能够连接到我的家用机器。我知道我可以从家用机器中删除手机的密钥,但在我意识到客户端设备已丢失/被破解之前,我很容易受到攻击。
是我误解了什么吗,还是这些担忧是合理的?
答案1
如果您的 SSH 服务允许基于密码的身份验证,那么您的 Internet 连接 SSH 服务器将日夜受到僵尸网络的攻击,试图猜测用户名和密码。僵尸网络不需要任何信息,它只需尝试流行的名称和流行的密码即可。有很多人名叫 john,密码是 qwerty123。除此之外,这会堵塞您的日志。
如果您的 SSH 服务仅允许公钥身份验证,攻击者需要服务器上存储的与公钥相对应的私钥副本。他们不能只是进行随机攻击,他们必须事先了解您的用户,并且必须能够从您的 SSH 服务器的授权用户的 PC 上窃取私钥。
事实上,私钥通常受长密码保护,但这一点并不重要。
更新:
正如评论指出的那样,并且就我的经验而言,将 SSH 服务从端口 22 移至高编号端口会显著减少日志中出现的未经授权的登录尝试次数。这值得做,但我确实认为这是一种隐蔽的安全形式(一种虚假的安全感)——迟早僵尸网络会实施缓慢隐秘的端口扫描,否则您将成为蓄意攻击的目标。最好做好准备。
我总是使用长密码来保护我的私钥,我想这对于更容易丢失或被盗的移动设备来说尤为重要。
答案2
其逻辑是,SSH 密钥的组合比密码多得多,因此很难被猜到。使用 SSH 密钥还允许您禁用密码验证,这意味着互联网上的大部分自动攻击都将无济于事。
就物理安全而言,保存密码和在设备丢失或被盗时在设备上保留未加密的 SSH 密钥没有区别。唯一的好处是没有人知道你的密码,而且理论上你可以确保所有设备都有不同的 SSH 证书,这样你就可以禁用手机上的证书。
我相信也可以使用密码保护 SSH 密钥。
答案3
密码也可能因为您的键盘受到“背对背”的监控而泄露。此外,在很多地方使用类似的密码也是一种弱点,尤其是当密码有时在不太安全的计算机上使用时,这些计算机可能会有键盘记录程序。
您说得对,如果计算机被盗,就可以从硬盘上读取未加密的密钥 - 因此请使用密码对其进行加密。
如果您的计算机受到恶意软件的攻击,无论如何您都会受到攻击...... - 有人可以获取加密密钥并记录您的密码。