La autenticación de clave pública falló

9

Estoy usando ubuntu 13.10, y el servidor ejecuta ubuntu 12.04. Había generado claves privadas y públicas usando ssh-keygen, puse id_rsa.pub en el lado del servidor y lo authorzied_keysagregué de acuerdo con el método que encontré en Internet. Pero, todavía tengo que ingresar la contraseña mientras intento iniciar sesión. He configurado el directorio de inicio en 700, el directorio .ssh en 700, el archivo authorzied_keys en 600, y he comprobado el archivo sshd_config, y no pasó nada.

La información de depuración (con la opción -vvv) y sshd_config es la siguiente, y nada aparece en el archivo auth.log del servidor.

Incluso he actualizado openssh-server openssh-client tanto en el lado del cliente como del servidor.

¿Hay algo más que deba hacer? Gracias por cualquier información.

debug3: load_hostkeys: loading entries for host "[xxx.101.15.62]:2222" from file "/home/leetom/.ssh/known_hosts"
debug3: load_hostkeys: found key type ECDSA in file /home/leetom/.ssh/known_hosts:2
debug3: load_hostkeys: loaded 1 keys
debug3: load_hostkeys: loading entries for host "[xxx.101.15.62]:2222" from file "/home/leetom/.ssh/known_hosts"
debug3: load_hostkeys: found key type ECDSA in file /home/leetom/.ssh/known_hosts:2
debug3: load_hostkeys: loaded 1 keys
debug1: Host '[xxx.101.15.62]:2222' is known and matches the ECDSA host key.
debug1: Found key in /home/leetom/.ssh/known_hosts:2
debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/leetom/.ssh/id_rsa ((nil)),
debug2: key: /home/leetom/.ssh/id_dsa ((nil)),
debug2: key: /home/leetom/.ssh/id_ecdsa ((nil)),
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/leetom/.ssh/id_rsa
debug1: read PEM private key done: type RSA
debug3: sign_and_send_pubkey: RSA 68:51:b6:ed:cc:c2:54:f4:xx:15:41:d7:f5:4a:0e:da
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/leetom/.ssh/id_dsa
debug3: no such identity: /home/leetom/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/leetom/.ssh/id_ecdsa
debug3: no such identity: /home/leetom/.ssh/id_ecdsa: No such file or directory
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
[email protected]'s password: 

y el sshd_config

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
leetom
fuente

Respuestas:

12

Parece que utilizamos su clave privada para intentar un inicio de sesión criptográfico, luego tuvimos que probar otros porque no fue aceptado:

debug1: Trying private key: /home/leetom/.ssh/id_rsa
debug1: read PEM private key done: type RSA
debug3: sign_and_send_pubkey: RSA 68:51:b6:ed:cc:c2:54:f4:xx:15:41:d7:f5:4a:0e:da
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password

El problema más simple podría estar en su copia de la clave pública, porque obtengo la misma respuesta al intentar autenticarme con una clave que sé que el otro extremo no tiene aquí.

En lugar de copiar manualmente la identificación, ¿por qué no intentar ssh-copy-id? Ingrese su contraseña y se actualizará authorized_keys. Eso debería (a) definitivamente seleccionar la misma clave que sshdebería estar seleccionando, (b) asegurarse de que no haya agregado accidentalmente ningún error de formato.

Si eso funciona para usted, compare la línea agregada authorized_keyspor ssh-copy-idy con suerte comprenderá lo que salió mal.

Greg
fuente
Funciona, muchas gracias! Resulta que tuve un error tipográfico con el authorized_keysnombre del archivo. Probé todos los métodos y verifiqué el nombre de archivo muchas veces (leí algo sobre el error tipográfico del nombre de archivo), pero ... Los ojos no funcionarán bien mientras tengo sueño ...
Leetom
Usar ssh-copy-idhizo el truco para mí
Asaf
Esto funciona perfectamente ... a menos que tengas una Mac. :)
Fixee
@Fixee brew install ssh-copy-idsi usas homebrew
Greg
1
Estos síntomas exactos también pueden manifestarse si tiene SELinux habilitado y mal configurado de modo que evite que sshd lea el archivo autorizado_keys (no siempre es obvio sin mirar el registro de auditoría de SELinux, porque SELinux es lo suficientemente detallado como para que pueda acceder fácilmente un estado en el manual de lee como el usuario o por medio de sudo puede tener éxito)
mtraceur
5

Los permisos pueden ser otro tipo de problema que causa fallas de autenticación de clave pública: compruebe que nadie más pueda leer sus directorios ~y sus ~/.sshdirectorios, excepto su usuario ( chmod 700 ~ && chmod 700 ~/.sshpodría solucionarlo).

EDITAR: los permisos 750 también ~deberían estar bien.

AntonioK
fuente
¿Es esto realmente cierto? Los permisos de ~/no deberían importar, el valor predeterminado en Ubuntu suele ser 755 en los directorios de inicio y funciona para mí.
UlfR
Realmente me enfrenté a eso usando (en el host remoto) CentOS 7 y tanto OpenSSH_6.4 como OpenSSH_6.6.1. Hacer acaba de chmod 700 ~resolver mi problema.
AntonioK
¡Bien por usted! Pero: de acuerdo con esto: askubuntu.com/a/69867/31749 no puede haber permisos de escritura grupal en el directorio de inicio, pero la lectura grupal debería estar bien.
UlfR
De acuerdo, debería verificar si 750 funciona en mi caso en ese sistema.
AntonioK
2
Solo lo revisé. chmod 750 ~funciona bien.
AntonioK
3

Por casualidad, al crear el authorized_keysarchivo, ¿ha escrito mal su nombre de archivo (ya que lo ha escrito como authorzied_keysen la pregunta (intercambiados i y z), existe la posibilidad de que haya nombrado el archivo de la misma manera) En el archivo de configuración ssh, el el nombre del archivo se menciona específicamente como

AuthorizedKeysFile %h/.ssh/authorized_keys

Por lo tanto, debe tener en cuenta que el nombre de archivo es el mismo. Así que solo verifique el nombre del archivo.

Divya
fuente
3

En ocasiones, debe proporcionar la clave privada explícitamente con -i

Ejemplo: ssh -i /root/.ssh/id_rsa2 user@remote

Yassin
fuente
1
Este no parece ser el problema aquí, pero de todos modos es un buen punto.
LittleByBlue