我有一个脚本,它使用公钥身份验证对几台服务器进行 SSH 连接。由于配置问题,其中一台服务器已停止让脚本登录,这意味着脚本卡在“密码:”提示中,显然无法回答,因此它甚至不尝试其余服务器在列表中。
如果密钥认证失败,有没有办法告诉 ssh 客户端不要提示输入密码,而是只报告连接错误并让我的脚本继续?
我有一个脚本,它使用公钥身份验证对几台服务器进行 SSH 连接。由于配置问题,其中一台服务器已停止让脚本登录,这意味着脚本卡在“密码:”提示中,显然无法回答,因此它甚至不尝试其余服务器在列表中。
如果密钥认证失败,有没有办法告诉 ssh 客户端不要提示输入密码,而是只报告连接错误并让我的脚本继续?
对于 OpenSSH,有 BatchMode,它除了禁用密码提示之外,还应该禁用查询密钥的密码短语。
示例用法:
要禁用当前 ssh 连接尝试的密码身份验证,请在命令行上传递此选项:
要禁用所有未来连接到任何主机的密码身份验证,请将以下内容添加到您的
~/.ssh/config
:要仅对某些主机禁用它,请将以下内容添加到 ~/.ssh/config:
上述选项适用于传出ssh 连接,即您尝试连接到远程 ssh 服务器的位置。
要在 ssh 服务器上禁用密码验证(即适用于所有传入的ssh 连接),请添加并重新
PasswordAuthentication no
启动./etc/ssh/sshd_config
sshd
如果您使用的是 dropbear,只需添加“
-s
”选项即可禁用密码验证。在命令行(或
~/.ssh/config
)上,您可以设置PreferredAuthentications
.这是一个示例 sftp bash 脚本片段。我正在使用“-o BatchMode=Yes”来禁用密码提示,以防万一失败。并检查frp返回码,检查ftp连接是否失败。