A autenticação da chave pública SSH falha quando o UsePAM está definido como "no"


19

Para desativar a autenticação de senha, defina os seguintes valores em meu sshd_config

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Quando tento fazer login com minha chave privada, recebo

Permission denied (publickey).

Se eu mudar UsePAMpara yes, posso fazer login usando minha chave privada. Por quê?

Estou me conectando a um host Ubuntu 12.04 de 64 bits do OSX

ssh -i ~/.ssh/deploy -l deploy localhost -p 2222 -v

aqui está a sshsaída detalhada :

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/<user>/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 2222.
debug1: Connection established.
debug1: identity file /Users/<user>/.ssh/deploy type 1
debug1: identity file /Users/<user>/.ssh/deploy-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 50:db:75:ba:11:2f:43:c9:ab:14:40:6d:7f:a1:ee:e3
debug1: Host '[localhost]:2222' is known and matches the RSA host key.
debug1: Found key in /Users/<user>/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/<user>/.ssh/key1
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: /Users/<user>/.ssh/deploy
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

Você executou o sshd no modo de depuração e verificou o log gerado?
Michael Hampton

Definitivamente vamos precisar de mais logs. Eu repliquei sua situação em uma VM (usando o Fedora 17) e funcionou para mim.
9788 Scott's Pack

Respostas:


15

Sem o PAM (Pluggable Authentication Module), é necessária uma configuração ssh mais complicada para autenticar. Você está procurando por isso, na verdade:

# grep Password /etc/ssh/sshd_config 
PermitEmptyPasswords no
PasswordAuthentication no

Isso desativará o login com senha. Verifique se as configurações de chave pública foram corretamente estabelecidas.


4
Isso não é verdade. Na verdade, muitos guias recomendamos a definição ChallengeResponseAuthentication, PasswordAuthenticatione UsePAMtodos noe usando autenticação de chave única público. Eu nunca trabalhei em um ambiente assim, então não posso facilmente dar uma verdadeira razão pela qual ele ainda não está funcionando.
Scott Pack

3
Foi por isso que defini como não, porque todos os guias que encontrei fizeram isso!
Erik Aigner

Eu vou ficar corrigido; Você está certo, Scott. Dito isto, se ele não desejar usar o pam_unix, ele precisará configurar o pam_nologin (ou permitir o acesso root.) Www-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9 / ...
Stephan

9

Sua conta de usuário está bloqueada? Você pode desbloquear a conta de usuário

passwd -u username

ou bloqueie a conta do usuário, mas ative o PAM:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM yes

1
Além disso, passwd -ufalhe se o usuário tiver uma senha vazia. Use echo username:$(head -c12 /dev/urandom |base64) |chpasswdpara definir uma senha válida aleatória.
temoto 24/03

usermod -p '*' usernamepermitirá que você defina os três como "não" e ainda permita que "nome de usuário" se conecte usando a autenticação de chave pública sem precisar definir uma senha descartável.
David David
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.