Как отключить пароль для повторной попытки в команде ssh

11

Я хочу, чтобы команда ssh позволяла вводить пароль только один раз, если в первый раз пароль был неверным, ssh вернется

Permission denied (publickey......).

Есть ли флаг, который говорит SSH запрашивать только один раз пароль?

Вместо:

[nir@dhcppc4 ~]$ ssh pokemon@192.168.1.103
pokemon@192.168.1.103's password: 
Permission denied, please try again.
pokemon@192.168.1.103's password: 
Permission denied, please try again.
pokemon@192.168.1.103's password: 
Permission denied (publickey.....).

Я хочу:

[nir@dhcppc4 ~]$ ssh pokemon@192.168.1.103
pokemon@192.168.1.103's password: 
Permission denied (publickey.....).

Решение должно быть на стороне клиента (например, какой-либо флаг для команды ssh или использование конвейера), я не могу коснуться sshd_config, или любой другой файл конфигурации системы. Поскольку в общем случае я создаю стороннее программное обеспечение (поэтому я не могу ни генерировать ключи, ни конфигурировать системные файлы), которое обращается к серверам в локальной сети, пароли сохраняются в БД (поэтому не требуется второй попытки). И в моем коде, если я смогу предположить, что у меня есть только одна попытка ssh/, scpэто упростит соответствующий код.

Nir
источник
1
Как показывают ответы, вы можете изменить это, но почему вы хотите? Люди часто печатают по ошибке, и значения по умолчанию установлены, чтобы учесть такие недостатки. Лучший вопрос может быть: «Как заблокировать пользователя, который потерпел неудачу при n попытках входа?» особенно если вы ищете защиту от вредоносных входов в систему.
13:30
Моя причина сложна и длинна. Что я могу сказать, так это то, что если пароль был неверным в первый раз - он будет оставаться неверным в следующий раз.
Nir
2
Вы хотите выполнить основную функцию администрирования системы (аутентификацию), но не можете коснуться файлов конфигурации системы? Не повезло тебе. Если вы хотите объяснить свою длинную и сложную причину, возможно, мы сможем увидеть X вместо Y, который вы представили в своей проблеме XY
msw
1
Единственный способ , которым я могу видеть это , даже будучи проблемой, если вы делаете пароль авторизацию , не в интерактивном режиме , в этом случае все , что утилита вы используете , чтобы сделать что должны либо иметь объект , чтобы прервать после одного неудачного пароля или, если не тогда эта утилита должна быть предметом этого вопроса.
Sammitch
1
Я также замечаю, что ssh отмечает неудачную попытку аутентификации с открытым ключом. Рассматривали ли вы копирование своего открытого ключа и полностью ли это избежать?
Sammitch

Ответы:

14

На справочной странице конфигурации sshd man 5 sshd_config:

 MaxAuthTries
     Specifies the maximum number of authentication attempts permitted
     per connection.  Once the number of failures reaches half this
     value, additional failures are logged.  The default is 6.

Таким образом, настройка MaxAuthTries 2будет той настройкой, которая вам понадобится. sshdПосле этого нужно будет перезапустить (нужно запустить от имени пользователя root):

/etc/init.d/ssh restart 

или

service ssh restart

На стороне клиента это можно установить с помощью настроек ssh (посмотрите, какие man 5 ssh_configнастройки вы можете применить):

 NumberOfPasswordPrompts
         Specifies the number of password prompts before giving up.  The
         argument to this keyword must be an integer.  The default is 3.

Так что отредактируйте свой ~/.ssh/configфайл и добавьте:

 Host <name_or_ip_of_host|*>
     NumberOfPasswordPrompts 1

Где <name_or_ip_of_host|*>канонический IP-адрес или имя хоста, которое вы используете в командной строке, или *для всех попыток подключения к хосту. Вы также можете указать это в командной строке, не редактируя /.ssh/configфайл:

  ssh -o NumberOfPasswordPrompts=1 user@hostname 
Драв Слоан
источник
Пожалуйста, смотрите вопрос редактировать. Я хотел использовать флаг / конвейер, а не измененияsshd_config
Nir
Я редактирую свой ответ, давая варианты на стороне клиента.
Драв Слоан
0

Посмотрите на MaxAuthTries в sshd_config. По умолчанию используется значение 6, поэтому имейте в виду, что вы можете пытаться выполнить аутентификацию pubkey, прежде чем пытаться ввести пароль при выборе значения.

Джон
источник