-1

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

我想要做的是在主服务器上使用私钥运行一个 scp,如果成功,就会收到文件。如果密钥尚未添加到远程服务器,则 scp 应该会失败,并且无需再做任何事情。

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

我试图删除是/否,并通过管道从包含三个换行符的文件中提示密码,但这并不能阻止它要求输入密码

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

我正在使用 Debian Wheezy。

4

1 回答 1

3

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

于 2013-08-19T12:20:15.063 回答