我编写了一个脚本,预计会从某个地方获取一堆主机名,并在每个主机上运行命令:
ssh "$host" some command
我有必要的配置来建立ssh
连接而无需密码。然而,有时我们会遇到需要密码的主机并且脚本挂起。
有没有办法让 ssh 在等待密码时超时?我不想使用该timeout
命令。
答案1
这些选项中的任何一个都可能在客户端起作用,以完全阻止询问密码,这似乎应该适用于您的情况。 (我假设您可以从某些日志中找到失败的主机并以交互方式重新运行它们。)ssh_config(5)
:
BatchMode If set to yes, passphrase/password querying will be disabled. ... PasswordAuthentication Specifies whether to use password authentication. The argument to this keyword must be yes (the default) or no.
所以,
ssh -oBatchMode=yes someuser@somehost ...
或者
ssh -oPasswordAuthentication=no someuser@somehost ...
答案2
您正在寻找登录宽限时间在你的sshd_config
。
从sshd_config(5)
:
LoginGraceTime
The server disconnects after this time if the user has not successfully logged in. If the value is 0, there is no time
limit. The default is 120 seconds.