本地网络中的 SSH

SSH in local network

我有大约 50 台计算机需要能够建立 ssh 连接。但是我必须在执行 ssh-copy-id 时不输入每个人的密码。我试图在 ssh 中禁用密码授权,但它不起作用,仍然要求输入密码。我知道每个 IP,但我想是否有任何无需密码即可连接的方法?如果我去找每个人并要求他们在他们的 PC 上输入密码,这也是可以接受的。谢谢

您可以使用 'ssh-keygen' 和 'ssh-copy-id' 通过 ssh 无需密码登录远程 linux:

1.- 在本地主机上使用 ssh-key-gen 创建 public 和私钥:

ssh-keygen 

2.- 使用 ssh-copy-id

将 public 密钥复制到远程主机
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host 

3.- 无需输入密码即可登录远程主机

ssh remote-host

您在 this documentation 中有更多信息。

来自ssh-copy-id(1)

By default it adds the keys by appending them to the remote user's ~/.ssh/authorized_keys (creating the file, and directory, if necessary).

因为所有 ssh-copy-id 所做的就是将您的 public 密钥(通常 ssh-keygen 将在 ~/.ssh/id_rsa.pub 中创建它)复制到 ~/.ssh/authorized_keys 文件,如果您想要避免在 ssh-copy-id 中输入 50 个密码,您只需找到一种方法将您的密钥附加到 50 个文件。我可以想到多种方法:

  1. 使用包含您的公钥的拇指驱动器亲自前往每台机器并手动复制它
  2. 准备一个 authorized_keys 文件,设置一个具有正确权限的匿名 ftp 服务器(或者可能是任何其他类型的服务器)并将其推送到那里(只有当你确定您不关心任何可能已写入现有文件的数据)
  3. 如果您已经设置了一个,请使用部署工具
  4. 如果每台机器都有一个用户,你可以反过来,用 file/web 服务器设置你的机器,用 script/binary 把你的 pubkey 从服务器并将其添加到 authorized_keys 文件的底部并要求每个用户下载并执行文件
  5. 可能还有其他可能的方法,不过这些对我来说似乎是最简单的方法