El servidor OpenSSH se niega a aceptar la autenticación de clave

13

Traté de usar la autenticación de clave pública en mi nuevo servidor, y me encontré con este problema.

$ ssh -v -i .ssh/server 192.168.1.100
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data .ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.1.100 [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file .ssh/server type -1
debug1: identity file .ssh/server-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
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: Host '192.168.1.100' is known and matches the RSA host key.
debug1: Found key in .ssh/known_hosts:1
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,password
debug1: Next authentication method: publickey
debug1: Trying private key: .ssh/server
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password

y luego tengo que ingresar mi contraseña para iniciar sesión.

Pero, si ya tengo una sesión conectada a ese servidor (que está conectado por contraseña), entonces la siguiente conexión usa la autenticación de clave para evitar la entrada de contraseña.

Si no hay una conexión SSH ya establecida, no puedo conectarme sin ingresar la contraseña.

Esto es realmente extraño para mí, revisé el MD5 /usr/sbin/sshdentre el nuevo servidor y el otro servidor normal, es lo mismo. Luego simplemente copié el /etc/ssh/sshd_configdel otro servidor normal al nuevo servidor y corrí service ssh restart. El problema aún existe.

¿Cómo se supone que voy a arreglar esto?

lxyu
fuente

Respuestas:

10

Comprueba que la .sshcarpeta y los archivos dentro de él en la máquina cliente sólo la puede leer por el propietario ( chmod -R 600 .ssh) y que el dueño es correcto para la carpeta y los archivos (uso chownde comandos si es necesario).

También verifique la authorized_keyscarpeta y el archivo en el servidor (probablemente en /root/.sshla carpeta de inicio del usuario que intenta iniciar sesión) para asegurarse de que sus permisos y el propietario estén configurados de la misma manera.


Editar: basado en más comentarios (¡y algunas conjeturas!): ¿Puede verificar /etc/ssh/sshd_configy ver si el siguiente parámetro está configurado como a continuación? Si no, intente editarlo.

AuthorizedKeysFile /home/%u/.ssh/authorized_keys

Tenga en cuenta que esto supone que no inicia sesión de forma remota como root

Linker3000
fuente
mi .ssh es 700 y los archivos en .ssh son 600, y verifiqué dos veces ~ / .ssh / certified_keys en la máquina remota. La configuración de la autenticación de clave pública es lo primero que hago después de instalar el sistema, por lo que no es probable que se vea afectada por otras operaciones. por cierto, el problema sigue ..
lxyu
OK, estoy agregando algo a mi respuesta en base a esto.
Linker3000
hay una línea de "#AuthorizedKeysFile% h / .ssh / Authorizedkeys". Intenté comentarlo, pero fue inútil ... por cierto, el mismo '/ usr / sbin / sshd' con el mismo 'sshd_config', ¿cómo se comportan de manera diferente?
lxyu
Finalmente reinstalé ubuntu, luego configuré openssh-server en un minuto y ahora funciona bien ... Todavía no sé qué está mal. :(
lxyu
A veces es realmente difícil descubrir cuál es el problema. Una vez escribí mal las claves autorizadas como "claves autorizadas". Necesitaba alrededor de una hora para solucionar esto. ¿Viste la falta de ortografía? ¡Es realmente complicado! :-)
finalmente
4

id_rsa.pubArreglé mi propio caso de este error al eliminarlo de .ssh.

Copié id_rsade otra máquina y la distribuí entre varios clientes ficticios. Por lo tanto, id_rsay en id_rsa.pubrealidad eran claves diferentes que impedían el uso de por id_rsacompleto.

Sin embargo, no hay mensaje de error para indicar esto claramente Lo descubrí esencialmente por accidente, tratando de poner las diferentes máquinas en un estado idéntico.

ketarax
fuente
3

Según mi hallazgo, el menor permiso del director del hogar del objetivo es 750. Si el mundo no lo es 0, no funcionará.

P.ej. para el directorio raíz:

drwxr-x--- 3 root root 4096 Jul 20 11:57 root

El siguiente es /root/.ssh

drwx------  2 root root  4096 Jul 17 03:28 .ssh

Luego /root/.ssh/authorized_keys

-rw------- 1 root root 1179 Jul 17 03:28 authorized_keys
David Wee
fuente
3

En mi caso, los permisos en el directorio de inicio eran en 775lugar de 0755o inferiores.

La ruta completa al archivo autorizado_claves, es decir, /home/user/.ssh/debe ser 0755o menor.

Aditya Advani
fuente
GRACIAS Esto acaba de enterarse de un dolor de cabeza que he tenido durante una semana. La mayoría de las personas solo mencionan la carpeta .ssh (700) y las claves autorizadas (600)
Jonathan Komar
2

Después de preocuparme mucho, obtuve la solución del problema:

El directorio de inicio del usuario no debe tener permiso 777ni escritura mundial. Si es el caso, la verificación de la clave SSH fallará y deberá ingresar una contraseña para iniciar sesión.

usuario2357653
fuente
1

Solo asegúrate de que la cuenta a la que intentas enviar ssh sea un usuario con una contraseña en el servidor remoto. Me golpeé la cabeza contra la pared durante media hora antes de encontrar esta respuesta aquí: /programming//a/14421105/758174

Pierre D
fuente
1

Si /etc/ssh/sshd_configtiene la siguiente línea sin comentarios, entonces su configuración SSH solo permite que una lista fija de usuarios ingrese al sistema, y ​​debe agregar cualquier cuenta nueva a la lista:

AllowUsers root user1 user2 user3

Cualquier otro usuario que no sea el mencionado anteriormente que intente iniciar sesión a través de SSH recibiría estos mensajes de error crípticos:

Roaming not allowed by server
Tilo
fuente
0

Descubrí que después de cambiar mi nombre de usuario y grupo (pero no ID) /etc/passwdy /etc/group, pero olvidando cambiar en /etc/shadowconsecuencia, recibí el mismo mensaje "No se permite roaming".

Andrés
fuente