Порядок аутентификации с SSH

22

Когда я вхожу через ssh через, -vя вижу, что ssh аутентифицируется следующим образом

debug1: Authentications that can continue: publickey,gssapi-with-mic,password,hostbased

Я хотел бы изменить порядок ... Есть идеи, как?

Моя большая проблема заключается в том, что пользователь с заблокированными учетными записями все еще может войти через открытые ключи. Я обнаружил, что могу добавить пользователя в группу "ssh-locked", добавить запретить эту группу от sshing, но мне все еще интересно, есть ли способ сообщить ssh'd: Пожалуйста, проверьте пароль перед ключами ...

Oz123
источник
1
Я думаю, что вы подходите к этому неправильно - ключи (как правило) более безопасны, чем пароли. Если учетная запись заблокирована, необходимо указать демону sshd, чтобы он не разрешал пользователю входить в систему независимо от метода аутентификации.
EightBitTony
Как я уже сказал, я нашел решение через DenyGroups. Я прошу это ради интереса.
Oz123

Ответы:

31

Сервер ssh решает, какие параметры аутентификации он разрешает, клиент ssh может быть настроен для решения, в каком порядке их использовать.

Клиент ssh использует PreferredAuthenticationsпараметр в файле конфигурации ssh, чтобы определить это.

С man ssh_config( смотрите онлайн здесь ):

PreferredAuthentications
             Specifies the order in which the client should try protocol 2 authentication methods.  This allows a client to prefer
             one method (e.g. keyboard-interactive) over another method (e.g. password).  The default is:

                   gssapi-with-mic,hostbased,publickey,
                   keyboard-interactive,password

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

EightBitTony
источник
Если вы используете Git Bash для Windows, сохраните конфигурацию ssh в~/.ssh/config
Spencer Williams
Порядок может иметь смысл, если один метод зависит от предыдущего. Например, 2FA при взаимодействии с клавиатурой может зависеть от того, что пользователь первым предоставил действительный пароль.
Steveayre
Можете ли вы опубликовать источник, куда вы скопировали информацию PreferredAuthentications выше? Я не вижу этого man sshни в /etc/ssh/ssh_config, ни в /etc/ssh/sshd_config. Где вы взяли эту информацию?
Габриэль Стейплс
Нашел это! Это было в man ssh_config. Я отправил правку для проверки, чтобы обновить ваш ответ, чтобы он содержал этот источник. Пожалуйста, приведите источники в следующий раз! Большое спасибо.
Габриэль Стейплс
18

Добавление этого:

PreferredAuthentications keyboard-interactive,password,publickey,hostbased,gssapi-with-mic

... чтобы мой /etc/ssh/ssh_configпомог мне решить эту проблему, и сэкономил много времени тоже!

Вы можете проверить, работает ли он, используя ssh -v user@hostкоманду для подключения, где -vобозначает "подробный".

Павел Анни
источник
2
Убедитесь, что вы добавляете это в правильный файл, ssh_configа не sshd_config. Последнее приведет к сбою вашего ssh!
Апельсины13.12.16
0

Добавляя к двум другим ответам, уже упоминающим PreferredAuthenticationsопцию, я хотел бы добавить, что вам не нужно редактировать какой-либо файл, чтобы установить этот параметр, если вы не хотите . Скорее, вы можете просто установить его в командной строке для отдельного вызоваssh , -oуказав следующую опцию:

ssh -o PreferredAuthentications=publickey,gssapi-with-mic,hostbased,keyboard-interactive,password user@hostname

Ссылки:

  1. Чтобы узнать больше об этой PreferredAuthenticationsопции, см. man ssh_config( См. Онлайн здесь ). Также читайте об этой ssh -oопции на man sshстраницах руководства ( онлайн здесь ).
Габриэль Стейплс
источник