Posso usar a senha ssh auth com o git-shell?

3

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]
    
por H2O 07.03.2017 / 03:15

1 resposta

1

Como acontece, este problema existia devido ao git-shell não estar presente em /etc/shells . Como mudei o shell de usuários com root (usando chsh com um nome de usuário especificado) enquanto um aviso era exibido, era possível alterar o shell para o git-shell em primeiro lugar.

Não sei ao certo por que o login baseado em chave ainda é possível, mas tudo funciona agora!

Geralmente, /etc/shells é apenas uma lista dos shells de login permitidos, mas aparentemente não é verificada em todos os casos.

    
por 14.03.2017 / 02:58