Em uma máquina Archlinux, estou tentando configurar a autenticação baseada em senha para um usuário. O shell de login do usuário deve ser configurado para o git-shell para não permitir a execução do comando no caso de a conta ser comprometida.
Meu sshd_config tem uma regra para apenas um usuário git que parece funcionar como eu posso fazer login com o usuário quando eu definir o shell de login para bash.
Quando, no entanto, o shell está configurado para git-shell, não consigo logar. Não tenho certeza de como o shell e a autenticação de senha estão realmente relacionados.
Para ser claro: não estou usando o ChallengeResponseAuthentication, mas a autenticação.
Ao tentar efetuar login enquanto o git-shell está ativado, recebo o seguinte erro no lado do usuário:
myuser@myhosts's password:
Permission denied, please try again.
No lado do servidor, ao iniciar o sshd com o sinalizador -d eu recebo isto:
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
Uma tentativa bem-sucedida com o bash como o shell se parece com isso:
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
Alguma idéia de por que isso acontece e como posso consertá-lo? A maneira mais simples seria apenas configurar uma chave para as máquinas que eu realmente uso, mas me irrita que eu não consiga fazer isso funcionar.
Edite, imprima com 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]