Назад | Перейти на главную страницу

SSH: запретить запрашивать парольную фразу при сбое аутентификации ssh-agent

Я пишу сценарий для циклического просмотра списка известных имен хостов, чтобы найти рабочий SSH-сервер, на котором я могу авторизоваться с помощью моего SSH-ключа.

Ключ уже загружен с участием ssh-agent и ssh-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"

Спасибо за ответы.

человек 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''.

Хотя ответ BatchMode, безусловно, правильный, я хочу также упомянуть, что вы также можете: -o PasswordAuthentication = no; та же страница руководства.