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

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

是否有一个 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
}

答案1

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

我确实找到了解决方案ssh_配置手册页:

BatchMode=yes

或者作为 ssh shell 的参数:

-o BatchMode=yes

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

如果设置为“是”,密码/密码查询将被禁用。

答案2

对于 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

我在这个问题上发现了这一点:https://stackoverflow.com/questions/15785832/how-to-make-ssh-command-execution-to-timeout

相关内容