Bash SSH配置文件限制为100个标识文件

Bash SSH配置文件限制为100个标识文件,bash,ssh,operating-system,Bash,Ssh,Operating System,我必须通过SSH连接到100多台机器。我制作了一个脚本来建立所有连接并执行所需的更改。问题是,我无法在每次为每个远程计算机执行脚本时键入密码。然后,我发现我可以在/root/.ssh/目录中创建一个名为config的文件,在那里我可以存储如下行: IdentityFile /root/.ssh/id_rsa_XXXX 密钥对也保存在/root/.ssh/中,但问题是我可以在config文件中写入100个标识文件 你知道是否有一个解决办法使这成为可能吗 谢谢大家,这里的第一个问题!:) 每个服务

我必须通过SSH连接到100多台机器。我制作了一个脚本来建立所有连接并执行所需的更改。问题是,我无法在每次为每个远程计算机执行脚本时键入密码。然后,我发现我可以在
/root/.ssh/
目录中创建一个名为
config
的文件,在那里我可以存储如下行:

IdentityFile /root/.ssh/id_rsa_XXXX
密钥对也保存在
/root/.ssh/
中,但问题是我可以在
config
文件中写入100个标识文件

你知道是否有一个解决办法使这成为可能吗


谢谢大家,这里的第一个问题!:)

每个服务器都有单独的ssh密钥吗?您可以绑定它们(每种类型/功能的服务器对应一个密钥)。这样,就不需要在配置文件中指定每一个

另一种解决方法是从命令行调用密钥,而不是像这样的配置文件:

ssh -i /root/.ssh/id_rsa_XXX -l user.name server.example.com
如果仔细操作,可以创建/root/.ssh/hostname,其中hostname是要连接到的服务器的实际主机名。例如:

/root/.ssh/server.example.com
然后可以这样编写脚本(BASH)(假设您调用脚本dossh.sh):

调用脚本,如下所示:

dossh.sh server.example.com

首先,如果你要连接100台服务器和100个密钥,那你就错了。如果确保私钥安全,则可以将公钥重新用于其他服务器


如果您试图一次将所有密钥加载到ssh,那么您的做法也是错误的。ssh配置有一个
Host
关键字,可以通过该关键字筛选应该在哪个服务器上使用哪个密钥。我建议你用它。否则ssh将不知道使用哪个服务器的密钥,并且它也克服了限制。

你是说如果我使用主机关键字,我可以避免限制吗?是的。如果只加载特定主机所需的一个。
dossh.sh server.example.com