【问题标题】:Terminate scp session if key is invalid, without prompting for password如果密钥无效,则终止 scp 会话,而不提示输入密码
【发布时间】:2013-08-21 05:32:46
【问题描述】:

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

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

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

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

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

我正在使用 Debian Wheezy。

【问题讨论】:

  • sshd_config中禁用密码验证。
  • @devnull 我想 OP 正在客户端寻找解决方案。
  • 服务器和客户端都是我的机器。

标签: bash ssh rsync scp


【解决方案1】:

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

【讨论】:

  • 我试过这个,但它对我不起作用。即使在 /etc/ssh/sshd_config 中设置 PasswordAuthentication no 后,我仍会提示输入密码。还设置NumberOfPasswordPrompts 0导致此错误:#service ssh restart /etc/ssh/sshd_config: line 88: Bad configuration option: NumberOfPasswordPrompts /etc/ssh/sshd_config: terminating, 1 bad configuration options
  • 不在服务器的配置中(sshd !),而是在客户端的配置中(ssh -> /home/user/.ssh/config)!如果文件不存在,您可以创建它。
  • 也试过了。仍然要求输入密码。在两者上重新启动 ssh 服务。
  • 奇怪。这适用于相同的 Debian 版本。您是否尝试在/etc/ssh/ssh_config 中将其设置为系统范围?
  • 成功了。一次打开四个外壳终端会让人感到困惑。 :)
猜你喜欢
  • 2019-02-15
  • 1970-01-01
  • 2021-06-04
  • 2012-08-11
  • 2018-05-25
  • 2021-03-23
  • 2014-07-07
  • 1970-01-01
  • 2015-07-28
相关资源
最近更新 更多