如果密钥无效,则终止scp会话,而不提示输入密码

时间:2013-08-19 12:10:46

标签: bash ssh rsync scp

我有一个脚本来监控服务器的远程状态。为此,我在每台远程计算机上运行一个脚本,该脚本将有关正常运行时间,cpu load,Distro版本的信息记录到日志文件中。我的主服务器上的脚本通过执行这些文件的scp查询其服务器,如下所示:scp -i ~/.ssh/id_rsa pingmonitor@IP:~/pingmon.dat ./。我有一些要查询此信息的计算机,以及远程服务器不提供此信息的其他计算机。

我想要做的是在主服务器上使用私钥运行scp,如果成功,则接收文件。如果密钥尚未添加到远程服务器,则scp应该失败,并且不再执行任何操作。

问题是如果服务器之前没有为ssh访问设置(在known_hosts中不可用),它会停止脚本,并提示:"无法建立主机的真实性。您确定要继续连接(是/否)?"。如果输入yes,则需要用户密码约3次。

我试图删除yes / no,并且密码提示来自包含三个换行符的文件,但这并不能阻止它要求输入密码

如何自动化脚本,使得如果私钥无效,它会停止会话并将控制权返回给脚本,而不会拖延并要求输入密码?

我正在使用Debian Wheezy。

1 个答案:

答案 0 :(得分:3)

在ssh_config中设置PasswordAuthentication=no(最有可能在~/.ssh/config中)。如果这不起作用,您还可以将NumberOfPasswordPrompts=0设置为零,这样您就不会被提示输入密码。

相关问题