是否有一个 SSH 选项(类似于-o ConnectTimeout=$seconds
)可以限制其在提示时等待的时间password:
?
注意,我做使用密钥对进行无密码 ssh,但我仍然每周都会看到password:
几次提示,因为我在后台窗口中运行 bash 函数,每当 SSH 隧道断开时,它们都会重新连接(因为我在 WiFi 网络之间徘徊并随机关闭 MacBook 盖子)。因此有时 SSH 协商会进入“密码:”状态,然后它停留直到我手动干预^C
或killall 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