SSH 为“密码”提示设置超时?

Dou*_*sDD 6 ssh bash

是否有一个 SSH 选项(类似于-o ConnectTimeout=$seconds)来限制它在password:提示时等待的时间?

请注意,我确实将密钥对用于无密码 ssh,但我仍然password:每周看到几次提示,因为我在后台窗口中运行了 bash 函数,每当它们断开时就会重新连接我的 SSH 隧道(当我在 WiFi 网络之间徘徊并关闭MacBook 盖子随机)。因此,有时 SSH 协商会进入“密码:”状态,然后它会一直停留在那里,直到我手动干预^Ckillall ssh...

dtunnel-home () {
  while true ; do
    title "XXX-TTT-..."
    wait-for-host.sh "$g"   ## sleep until ping-able.
    time (
        set -x
         ssh -o ConnectTimeout=10        \
             -Y -L 5920:$t:5900  -L ...  \
             $g_user@$g
    ) ; date "+%Y-%m-%d_%H-%M-%S"
  done
}
Run Code Online (Sandbox Code Playgroud)

cei*_*art 6

对于 Linux,您可能可以选择timeout使用任何常规 RPM 中的“coreutils”提供的命令来解决问题。

如果超时则返回代码124

cinacio@jdivm04:~> time timeout 10s ssh cinacio@vulca_5 ; echo $?
cinacio@vulca_5's password:

real    0m10.002s
user    0m0.006s
sys     0m0.002s

124
Run Code Online (Sandbox Code Playgroud)

我在这个问题上发现了这一点:/sf/ask/1105008271/


小智 2

我最近遇到了类似的问题(在后台运行的 cygwin ssh shell 应该自动重新连接,有时会出现密码提示)。

\n\n

我确实在ssh_config手册页中找到了解决方案:

\n\n
BatchMode=yes\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者作为 ssh shell 的参数:

\n\n
-o BatchMode=yes\n
Run Code Online (Sandbox Code Playgroud)\n\n

根据手册页,它禁用客户端的密码提示:

\n\n
\n

如果设置为 \xe2\x80\x9cyes\xe2\x80\x9d,将禁用密码短语/密码查询。

\n
\n