如何强制 SSH 私钥具有密码?

信息安全 验证 公钥基础设施 SSH 打开sh
2021-09-11 14:32:21

我的公司非常重视安全性并愿意转向 SSH 密钥对。用户可以独立生成他们的 SSH 密钥对,我担心他们是否设置了密码。我可以强制执行吗?使用 ssh-keygen 签名有帮助吗?

2个回答

不可以。您不能在服务器端强制密钥具有密码。密钥始终在客户端,服务器只看到挑战和公钥的签名。证书(又名签名密钥)也无济于事,因为公钥已签名。

如果您想在安全方面采用这种方式,我建议您查看某种两因素身份验证或智能卡。

由于我们无法在服务器端强制使用密码短语,因此我们必须通过对用户的教育来降低风险。

私有 ssh 密钥文件是敏感数据,如果管理不当,可能会导致系统受损。确保使用密码的一种方法是正式策略,对发现未加密的密钥进行惩罚。但是正确使用 ssh-keys 并不难或不方便。

每天使用ssh-agent和在轮班期间提供与无密码登录相同的便利:ssh-add

eval $(ssh-agent -s)
ssh-add

注意:Gnome Keyring 可以为您存储密码。

注意:在 Mac 上,您甚至可以将密码短语存储在钥匙串中:

ssh-add -K

一个额外的控制是使用更新的文件格式和密钥类型,这将为对文件的暴力攻击提供保护,如果密钥具有密码短语,则需要几秒钟才能在 ssh-agent 中加载(暴力破解需要永远)。

ssh-keygen -t ed25519 -a 500