我有特定服务器的用户名,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工具。
答案 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密钥而不是密码进行身份验证,因为这有助于自动进程,否则需要提示。它也可以更安全,因为这意味着您的密码不会以明文形式存储在某个地方。