![在多台计算机上使用相同的私人 ssh 密钥是一个坏主意吗?](https://linux22.com/image/1211505/%E5%9C%A8%E5%A4%9A%E5%8F%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%90%8C%E7%9A%84%E7%A7%81%E4%BA%BA%20ssh%20%E5%AF%86%E9%92%A5%E6%98%AF%E4%B8%80%E4%B8%AA%E5%9D%8F%E4%B8%BB%E6%84%8F%E5%90%97%EF%BC%9F.png)
我最近买了一台笔记本电脑,我需要用它访问与台式机相同的远程主机。我突然想到,也许可以简单地将私钥文件从台式机复制到笔记本电脑,这样就不必向~/.ssh/authorized_keys
我想要访问的所有主机上的文件添加新密钥。所以我的问题是:
- 这可能吗?
- 是否存在任何不明显的安全隐患?
- 有时我会从笔记本电脑登录台式电脑。如果使用相同的密钥,会造成任何问题吗?
答案1
是的,这是可能的。您的私钥不绑定到单个机器。
不确定您说的“不明显”是什么意思,这通常是主观的 ;)。如果您确保设置了非常强的密码,至少 20 个字符,那么这绝对不是一个坏主意。
使用与桌面相同的密钥进行连接不会出现任何问题。我会在笔记本电脑上为你的密钥设置一个 ssh 代理,并将该代理转发到桌面,这样你就可以在从那里访问的其他系统上使用该密钥。
从 Linux 系统上的 ssh-agent 手册页中:
ssh-agent 是一个用于保存用于公钥认证(RSA、DSA)的私钥的程序。其理念是,ssh-agent 在 X 会话或登录会话开始时启动,所有其他窗口或程序都作为 ssh-agent 程序的客户端启动。通过使用环境变量,可以在使用 ssh(1) 登录到其他计算机时找到代理并自动使用该代理进行认证。
您可以在笔记本电脑上运行它,Linux/Unix 上的 ssh-agent 程序(它随 OpenSSH 一起提供),或者如果您使用的是 Windows,则使用 puTTY 代理。您不需要在任何远程系统上运行代理,它只会将您的私钥保存在本地系统的内存中,因此您只需输入一次密码即可将密钥加载到代理中。
代理转发是 ssh 客户端(ssh
或 putty)的一项功能,它只是通过 ssh 连接将代理持久保存到其他系统。
答案2
我过去在所有机器上使用单个私钥(其中一些机器上我只是用户,不是管理员),但最近改变了这一点。使用一个密钥是可行的,但这意味着如果您需要撤销密钥(如果密钥被盗用),则需要在所有机器上更改它。
当然,如果攻击者获得访问权限并能够通过 ssh 进入另一台机器,他们就可以从该机器获取密钥,依此类推。但知道我只需撤销一个密钥并锁定该机器,这让我感到更安全一些。不过,这确实意味着我需要从 authorized_keys 文件中删除密钥。