3

На компьютере с Archlinux я пытаюсь настроить аутентификацию на основе пароля для пользователя. Оболочка входа пользователей должна быть настроена на git-shell, чтобы не допустить выполнения команды в случае взлома учетной записи.

У моего sshd_config есть правило только для этого одного пользователя git, которое, кажется, работает, поскольку я могу войти в систему с пользователем, когда я устанавливаю оболочку входа в систему bash. Однако, когда оболочка настроена на git-shell, я не могу войти. Я не уверен, как на самом деле связаны оболочка и аутентификация по паролю. Чтобы было ясно: я не использую ChallengeResponseAuthentication, но Authentication.

При попытке войти, когда git-shell включен, я получаю следующую ошибку на стороне пользователя:

myuser@myhosts's password:
Permission denied, please try again.

На стороне сервера при запуске sshd с флагом -d я получаю следующее:

debug1: user myuser matched 'User myuser' at line 135
debug1: PAM: initializing for "myuser"
debug1: PAM: setting PAM_RHOST to <homeip>
debug1: PAM: setting PAM_TTY to "ssh"
debug1: userauth-request for user myuser service ssh-connection method password [preauth]
debug1: attempt 1 failures 0 [preauth]
debug1: PAM: password authentication failed for myuser: Authentication failure
Failed password for myuser from <homeip> port 57470 ssh2

Успешная попытка использования bash, так как оболочка выглядит так:

debug1: user myuser matched 'User myuser' at line 135
debug1: PAM: initializing for "myuser"
debug1: PAM: setting PAM_RHOST to "<homeip>"
debug1: PAM: setting PAM_TTY to "ssh"
debug1: userauth-request for user myuser service ssh-connection method password [preauth]
debug1: attempt 1 failures 0 [preauth]
debug1: PAM: password authentication accepted for myuser
debug1: do_pam_account: called
Accepted password for myuser from <homeip> port 57499 ssh2

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

Редактировать, выводить с DEBUG3:

debug3: send packet: type 51 [preauth]
debug3: receive packet: type 50 [preauth]
debug1: userauth-request for user myuser service ssh-connection method password [preauth]
debug1: attempt 2 failures 1 [preauth]
debug2: input_userauth_request: try method password [preauth]
debug3: mm_auth_password entering [preauth]
debug3: mm_request_send entering: type 12 [preauth]
debug3: mm_auth_password: waiting for MONITOR_ANS_AUTHPASSWORD [preauth]
debug3: mm_request_receive_expect entering: type 13 [preauth]
debug3: mm_request_receive entering [preauth]
debug3: mm_request_receive entering
debug3: monitor_read: checking request 12
debug3: PAM: sshpam_passwd_conv called with 1 messages
debug1: PAM: password authentication failed for myuser: Authentication failure
debug3: mm_answer_authpassword: sending result 0
debug3: mm_request_send entering: type 13
Failed password for myuser from <homeip> port 52928 ssh2
debug3: mm_auth_password: user not authenticated [preauth]
debug3: userauth_finish: failure partial=0 next methods="publickey,password" [preauth]
debug3: send packet: type 51 [preauth]

1 ответ1

1

Как оказалось, эта проблема существовала из-за отсутствия git-shell в /etc/shells . Так как я изменил пользовательскую оболочку с помощью root (используя chsh с указанным именем пользователя) во время отображения предупреждения, можно было сначала изменить оболочку на git-shell.

Я не совсем уверен, почему регистрация на основе ключей все еще возможна, но теперь все работает!

Обычно /etc/shells - это просто список разрешенных оболочек для входа, но, по-видимому, он не проверяется в каждом случае.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .