SSH:当 ssh-agent 身份验证失败时,防止询问密码

SSH:当 ssh-agent 身份验证失败时,防止询问密码

我正在编写一个脚本来循环遍历已知主机名列表,以便找到可以使用我的 SSH 密钥进行身份验证的正常工作的 SSH 服务器。

关键是已加载使用ssh-agentssh-add,因此如果我连接到知道我的密钥的工作远程主机,则不会提示密码,并且我无需任何交互即可成功连接。

问题是,当远程主机不知道我的密钥时,ssh会提示我输入密码(它没有成功的机会,因为如果可以的话,它已经让我登录了ssh-agent)。我想阻止这种行为,并在身份验证失败ssh时中止ssh-agent

我目前正在使用以下命令来绕过大多数交互,但我无法阻止我刚才描述的交互:

$ ssh -i ~/.ssh/id_rsa                      \
      -o UserKnownHostsFile=/dev/null       \
      -o KbdInteractiveAuthentication=no    \
      -o StrictHostKeyChecking=no           \
      -o PreferredAuthentications=publickey \
      -o ConnectTimeout=1                   \
      $host -n "whoami"

谢谢您的回答。

答案1

人ssh_config:

 BatchMode
         If set to ``yes'', passphrase/password querying will be disabled.
         This option is useful in scripts and other batch jobs where no
         user is present to supply the password.  The argument must be
         ``yes'' or ``no''.  The default is ``no''.

答案2

虽然 BatchMode 答案肯定是正确的,但我还想提一下,您也可以这样做:-o PasswordAuthentication=no;相同的手册页。

相关内容