使用ssh连接时是否可以自动为终端输入值?

时间:2014-08-18 20:19:57

标签: linux bash shell ssh

我有特定服务器的用户名,IP地址和密码。我想使用带有ssh连接的sshpass连接到这些服务器。这将是我与这些服务器的第一次连接,因此ssh将保存他们的指纹。我需要编写代码来处理任何提示,询问我是否要继续连接并输入密码。

问题是,由于它是一个新连接,它会提示我是否要继续,我不想输入"是"对于每个服务器。我将在一个点处理超过50台服务器,我不想手动输入"是"然后是密码。

这是我在bash中实际拥有的(虚拟)代码:

ip="192.168.111.111"
user="user"
password="password"

sshpass -p $password $user@$ip "exit"

此代码出现Host key verification failed错误。

然后我尝试了:$user@$ip "exit"我得到一个提示,问我是否要继续连接(是/否)。我不想输入"是"每次然后是每个服务器的密码。可以有一些代码可以手动为您执行此操作吗?

感谢。如果需要进一步说明,请与我们联系。另外,我想避免使用Expect工具。

1 个答案:

答案 0 :(得分:1)

您可以通过在相关主机名下的〜/ .ssh / config中添加此选项来禁用主机密钥检查

Host xxx.xxx.xxx.xxx
    StrictHostKeyChecking no

您可以使用通配符来匹配IP范围(例如,Host *可用于全局设置)。在配置中使用此选项,您应该能够使用此命令:

sshpass -p"$password" ssh "$user"@"$ip"

如果您不想编辑配置文件,可以在命令行中指定选项:

sshpass -p"$password" ssh -o StrictHostKeyChecking=no "$user"@"$ip"

请注意,通常情况下,建议在这种情况下使用SSH密钥而不是密码进行身份验证,因为这有助于自动进程,否则需要提示。它也可以更安全,因为这意味着您的密码不会以明文形式存储在某个地方。