![如何使用公钥和私钥连接多台服务器?](https://linux22.com/image/1569813/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%85%AC%E9%92%A5%E5%92%8C%E7%A7%81%E9%92%A5%E8%BF%9E%E6%8E%A5%E5%A4%9A%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
假设我有 4 台服务器 A、B、C 和 Z,我的桌面是 MacBox,还有另一位开发人员 Adam。我已经在 MacBox 中生成了公钥私钥对,并将公钥复制到 A,这样现在我就可以毫无问题地 ssh user@A。服务器 A 现在有 ~/.ssh/authorized_keys,其中包含来自 MacBox 的公钥。
(1) 现在我希望能够从 MacBox ssh 进入 B 和 C。我是否需要为 B 和 C 分别重新生成公钥/私钥对?或者我可以简单地将已经为 A 生成的公钥复制到 B 和 C 中?
(2) 服务器 Z 还希望能够使用密钥通过 ssh 连接到 B,以便在服务器 Z 上运行的脚本可以在服务器 B 上运行远程命令。 我是否需要登录 Z 并生成密钥对并将公钥从服务器 Z 复制到 B?
(3) 我希望 Adam 能够通过 ssh 登录到服务器 B。我是否需要将服务器 B 的密码提供给 Adam,以便他可以生成密钥对并将他的公钥复制到 B?与所有服务器一样,B 是 Linux 操作系统,除了 root 用户外,还有 userB 帐户。我是服务器 A、B 和 C 的所有者。我可以选择创建帐户“adam”,并授予 adam 与 userB 一样的 sudo 权限,以便他可以执行系统命令,例如启动和停止服务。仍然需要弄清楚为 Adam 创建单独的帐户是否有任何安全优势,或者只让 Adam 使用 userB 帐户。
答案1
每个用户只需要一个 ssh 公钥/私钥对。将公钥附加到您希望用户登录的每个服务器上的 authorized_keys 文件中。
大多数 Linux 发行版都提供了一个名为 ssh-copy-id 的工具来为您完成这项工作。它类似于 ssh 命令。希望 Mac 也有这个命令。
因此,对您的问题的答案如下:1. 从 MacBox 运行“ssh-copy-id user@B”将您的公钥放入服务器 B 上的用户的 authorized_keys 文件中。运行“ssh-copy-id user@C”对服务器 C 执行相同操作。
您没有指定服务器 Z 上的哪个用户需要连接到 B。如果 userZ 已经有 ssh 密钥对,那么您只需使用它即可。再次在服务器 Z 上运行“ssh-copy-id user@B”以完成设置。
Adam 在服务器 B 上有帐户吗?您是否希望 Adam 使用某个帐户登录服务器 B?如果 Adam 在服务器 B 上没有帐户,您可能必须在使用 SSH 执行任何操作之前为 Adam 创建一个帐户。如果您希望 Adam 使用某个帐户登录服务器 B,并且该帐户已经存在,则无需创建用户。一旦有了可供 Adam 登录服务器 B 的帐户,Adam 就需要创建一个 SSH 密钥对。一旦 Adam 创建了密钥对,Adam 就可以使用 ssh-copy-id 程序将公钥部分放到服务器 B 上。如果 Adam 有自己的帐户,则运行“ssh-copy-id B”与“ssh-copy-id Adam@B”相同。运行“ssh-copy-id user@B”会将 Adam 的公钥放入服务器 B 上用户的 authorized_keys 文件中。
希望这可以帮助。