Как отключить запрос пароля со стороны клиента ssh?

9

У меня есть скрипт, который опирается на SSH-аутентификацию с открытым / закрытым ключом. Проблема заключается в том, что некоторые системы неправильно настроены и не имеют надлежащего настроенного доверительного / открытого ключа ssh. Когда это произойдет, sshспросите меня о пароле, блокирующем выполнение скрипта. Я попробовал эту команду:

sudo ssh -o "PasswordAuthentication=no" -o "ChallengeResponseAuthentication=no" root@last-call

Но мне все еще предлагают ввести пароль root.

Красный крикет
источник
После проб и ошибок я нашел нужный вариант. "PreferredAuthentications=publickey"
Красный Крикет
это лучше, чем предложенное решение? (BatchMode)
knocte

Ответы:

9

Канонический способ сделать это с помощью BatchModeопции:

ssh -o BatchMode=yes …

Согласно инструкции :

Если установлено «да», запрос парольной фразы / пароля будет отключен. Эта опция полезна в сценариях и других пакетных заданиях, где нет ни одного пользователя для ввода пароля.

Я бы ожидал, что сочетание PasswordAuthentication=noи ChallengeResponseAuthentication=noбудет достаточно, хотя. ssh -vvможет дать подсказку.

Жиль "ТАК - прекрати быть злым"
источник
Это тоже работает! $ sudo ssh last-call-2 Password: $ sudo ssh -o "BatchMode=yes" last-call-2 Permission denied (gssapi-keyex,gssapi-with-mic,publickey,password,keyboard-interactive).
Красный Крикет