我对 SSH 和无密码身份验证的概念还不熟悉。
我正在尝试使用 SSH-keygen 在两台服务器 A 和 B 之间建立无密码 SSH 连接。
如果我以“root”用户身份在“服务器 A”上生成密钥,“服务器 A”上的所有其他用户是否都可以使用无密码 SSH 连接?
(或者)
我是否需要为每个用户创建单独的密钥?
我正在尝试为包括 root 用户在内的一组特定用户设置无密码 SSH 连接。
答案1
不,为根用户生成密钥对不会“应用”于其他用户。
您可以生成一个密钥对,然后复制相同的民众~/.ssh/authorized_keys
您需要访问的计算机的任何用户的密钥。这样,您可以通过同一个 user@computer 连接到任何地方。也可以连接到其他计算机。或者甚至从其他用户和计算机如果您复制私人的钥匙 (不!)但从安全角度来说这不是一个好的做法。
我将用简单的术语解释这个过程。
- 在客户端计算机上生成密钥对,您将在其中执行
ssh
命令;由您想要使用的用户执行ssh
。不一定需要在那里生成(或由某个用户生成),但这样更简单。 - 复制公钥仅有的您生成的文件对于您想要通过 ssh 连接的计算机以及该计算机的用户来说
ssh-copy-id
基本上是执行以下操作:
cat ~/.ssh/id_rsa.pub | ssh user@computer 'cat >> ~/.ssh/authorized_keys'
请记住,您可以任意从任何 user@computer1 连接到任何 user@computer2。例如,无需将 root 连接到 root。关键点是,无论使用哪种方法,都只能复制或传输公钥。私钥不得被您不希望的人传输、复制或访问。
我使用术语“计算机”而不是“客户端/服务器”,因为如今大多数 Linux 系统都默认安装了 sshd(服务器)和 ssh(客户端)。因此,您可以使用 ssh 连接和管理服务器之间的连接,甚至可以从服务器到客户端进行连接和管理。