Вопрос или проблема
Я администратор сервера Ubuntu 20.04 и хочу включить вход ssh
для пользователя с использованием пароля, а не ключей.
Файл /etc/ssh/ssh_config
на хосте выглядит следующим образом (<имя_пользователя>
заменено на его фактическое имя):
Host*
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
Match User <имя_пользователя>
PubkeyAuthentication no
PreferredAuthentications password
PasswordAuthentication yes
Тем не менее, когда он пытается войти как:
ssh \<имя_пользователя>@\<хост>
он получает ошибку:
Permission denied (publickey)
Что я делаю не так?
Примечание: вам нужно редактировать конфигурацию демона ssh, а не файл ssh.config
на удаленном компьютере.
Я предполагаю, что ssh-сервер настроен только на использование аутентификации по ключам и аутентификация по паролю отключена в файле /etc/ssh/sshd_config
.
Создайте дополнительный конфигурационный файл:
Новые версии openssh-server позволяют создавать файлы /etc/ssh/sshd_config.d/*.conf
, а не редактировать файл “/etc/ssh/sshd_config`.
Создайте новый файл /etc/ssh/sshd_config.d/10-password-login-for-special-user.conf
:
sudo nano /etc/ssh/sshd_config.d/10-password-login-for-special-user.conf
Добавьте следующие строки:
Match User <имя_пользователя>
PasswordAuthentication yes
Замените <имя_пользователя>
на имя специального пользователя.
Сохраните файл, используя Ctrl+O, затем Enter. Затем выйдите из редактора, нажав Ctrl+X.
Перезапустите службу ssh командой:
sudo systemctl restart ssh.service
Теперь специальный пользователь сможет удаленно войти с использованием пароля, в то время как все остальные пользователи продолжат использовать аутентификацию на основе ключей.
Ссылки:
- SSH Разрешить пароль для одного пользователя, остальным разрешить только публичные ключи
- SSH вход на основе ключа, который требует как ключ, так и пароль
Надеюсь, это поможет
Я установил PasswordAuthentication yes
на сервере и перезапустил ssh.service
, но он все еще не предлагал вход с паролем. Не желая вводить публичный ключ в физической консоли Raspberry Pi, где я пытался настроить обычный Ubuntu Server 24.04, я обнаружил, что есть дополнительный конфигурационный файл, который переопределяет любые изменения, которые вы сделали в обычном sshd_config
:
$ cat /etc/ssh/sshd_config.d/50-cloud-init.conf
PasswordAuthentication no
Почему они решили не использовать обычный /etc/ssh/sshd_config
для его значений по умолчанию, мне непонятно, но изменение этого дополнительного файла на yes
сработало.
Ответ Люка сработал для меня. На моем компьютере имя файла начиналось с 60-какого-то. Я внес изменения следующим образом :
Match User my-user
PasswordAuthentication yes
Match All
PasswordAuthentication no
Ответ или решение
Для того чтобы включить SSH-доступ с использованием пароля для определенного пользователя на сервере Ubuntu 20.04, вам потребуется внести изменения в конфигурацию SSH-сервера. Следуйте этим шагам:
-
Проверьте конфигурацию SSH-сервера:
Первым делом убедитесь, что файл конфигурации SSH-сервера (/etc/ssh/sshd_config
) позволяет аутентификацию по паролю. Откройте его с помощью текстового редактора:sudo nano /etc/ssh/sshd_config
Найдите строки, связанные с аутентификацией по паролю:
PasswordAuthentication no
Если такая строка присутствует, измените
no
наyes
. Если вы не хотите, чтобы все пользователи имели доступ по паролю, добавьте следующее в конце файла:Match User <username> PasswordAuthentication yes Match All PasswordAuthentication no
Замените
<username>
на имя пользователя, для которого вы хотите включить доступ по паролю. -
Использование дополнительных конфигурационных файлов:
Начиная с более новых версий OpenSSH, можно создать отдельные файлы конфигурации в каталоге/etc/ssh/sshd_config.d/
. Это позволяет более гибко управлять параметрами.Для этого создайте новый файл, например:
sudo nano /etc/ssh/sshd_config.d/10-password-login-for-special-user.conf
Добавьте следующие строки:
Match User <username> PasswordAuthentication yes
Замените
<username>
на имя соответствующего пользователя. Сохраните изменения, нажавCtrl + O
, затемEnter
, и выйдите из редактора, нажавCtrl + X
. -
Перезагрузите SSH-сервис:
После внесения изменений необходимо перезапустить службу SSH, чтобы они вступили в силу:sudo systemctl restart ssh.service
-
Проверка других конфигурационных файлов:
Если после этих изменений доступ по паролю все равно не работает, проверьте наличие дополнительных конфигурационных файлов, которые могут переопределять ваши настройки. Например, файл/etc/ssh/sshd_config.d/50-cloud-init.conf
может содержать строкуPasswordAuthentication no
. В этом случае измените ее наyes
. -
Тестировка доступа:
Чтобы протестировать доступ, выполните команду:ssh <username>@<host>
Запрос пароля должен появиться, и пользователь сможет войти в систему, используя пароль.
Следуя этим шагам, вы сможете настроить доступ по паролю для определенного пользователя в среде Ubuntu 20.04, в то время как другие пользователи останутся с доступом только по ключам.