desarrollo-web-br-bd.com

La autenticación de clave pública SSH no funciona

Tengo problemas para configurar la autenticación de clave pública para un servidor SSH en el servidor Ubuntu 12.04 (A) para la autenticación desde un servidor Ubuntu 13.04 (B).

Lo que estoy haciendo ahora (estoy tratando de seguir las instrucciones aquí ):

  • En B: Cree una nueva clave con ssh-keygen -C "", sin usar una frase de contraseña, escribiendo en /.ssh/id_rsa - No recibo ningún error
  • En B: Ejecute ssh-copy-id -i /.ssh/id_rsa [email protected] - también, un mensaje de éxito
  • En B: ssh -i /.ssh/id_rsa [email protected] - Todavía tengo que ingresar mi contraseña para [email protected]

En A, verifiqué si el /.ssh/authorized_keys se modifica después de ejecutar ssh-copy-id, y este es el caso. Además, en ambos dispositivos agregué esto a /etc/ssh/sshd_config:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /.ssh/authorized_keys

¿Alguien sabe cuál podría ser el problema aquí?


Aquí está la cola de mi /var/log/auth.log en la máquina A:

Jun 13 22:17:56 laptop-camil sshd[12344]: Server listening on 0.0.0.0 port 22.
Jun 13 22:17:56 laptop-camil sshd[12344]: Server listening on :: port 22.
Jun 13 22:18:27 laptop-camil sshd[12345]: Authentication refused: bad ownership or modes for directory /.ssh
Jun 13 22:18:30 laptop-camil sshd[12345]: Accepted password for camilstaps from 164.138.27.37 port 48407 ssh2
Jun 13 22:18:30 laptop-camil sshd[12345]: pam_unix(sshd:session): session opened for user camilstaps by (uid=0)
Jun 13 22:18:35 laptop-camil sshd[12464]: Received disconnect from 164.138.27.37: 11: disconnected by user
Jun 13 22:18:35 laptop-camil sshd[12345]: pam_unix(sshd:session): session closed for user camilstaps
Jun 13 22:18:42 laptop-camil sshd[12516]: Authentication refused: bad ownership or modes for directory /.ssh
Jun 13 22:18:44 laptop-camil sshd[12516]: Connection closed by <Host-b> [preauth]
10
Keelan

¿Hay algo en los archivos de registro, particularmente /var/log/auth.log? También puede verificar los permisos en el directorio y los archivos .ssh.

No he tenido que modificar sshd_config para este tipo de acceso, yo mismo. Me pregunto si su modificación rompió las cosas, especialmente la línea AuthorizedKeysFile. Por lo general, desearía colocar las claves autorizadas bajo $USER/.ssh.

Aquí están los permisos de un usuario en uno de mis servidores:

:~/.ssh$ ls -ld .
drwx------ 2 rrd rrd 4096 May 28 17:57 .

:~/.ssh$ ll
total 280
-rw-r----- 1 rrd rrd   4351 May 22 16:20 authorized_keys
-rw------- 1 rrd rrd   1679 Apr 27  2012 id_rsa
-rw-r--r-- 1 rrd rrd    399 Apr 27  2012 id_rsa.pub
-rw-r--r-- 1 rrd rrd 266138 Jun 13 00:18 known_hosts

Asegúrese de que los archivos individuales tengan al menos esta restricción.

Como señala guntbert, también verifique que el directorio y los archivos sean de su propiedad. Los permisos no tendrán sentido (o trabajo) de lo contrario.

¿De quién son las llaves en claves_autorizadas en B? (El bit que dice user @ Host después de la clave). ¿Es root @ A?

Es decir, al mirar ~/.ssh/authorized_keys, cuál es el equivalente de [email protected] para su configuración:

ssh-rsa AAAA...ffsII8dSaDF33 [email protected]

Simplemente editaría las claves remotas .ssh/autorizadas manualmente para la prueba, poniendo el contenido id_rsa.pub del usuario con el que está iniciando la conexión.

Asegúrese de que proviene del usuario que tiene la clave en el archivo remote_keys remoto.

7
belacqua

El directorio ~/.ssh DEBE ser propiedad del usuario, no root. Así que cambia eso y funcionará.

Para evitar tener que escribir la frase de contraseña de su clave privada cada vez que use ssh-agent. ssh-add .ssh/id_rsa agregará la clave al agente, a partir de entonces el agente le proporcionará la clave a ssh.

4
guntbert

Además de todos los otros muchachos que han proporcionado las soluciones, mi sugerencia adicional es que primero debe verificar el archivo de registro: /var/log/secure, que es donde sshd coloca los registros. Si algo sale mal, comprobar qué sshd se ha quejado en /var/log/secure reducirá rápidamente lo posible cuestiones.

2
Meow

Esta es una pregunta antigua y ya ha sido respondida, pero si el usuario tiene el directorio de inicio encriptado (usando ecryptfs o algo así), ssh daemon no podrá ver el archivo ~/.ssh/Authorizedkeys. Si ese es el caso, siga la solución enumerada aquí .

Esta solución recomienda cambiar la configuración de sshd (/ etc/ssh/sshd_config) y cambiar AuthorizedKeysFile a /etc/ssh/%u/authorized_keys y copiar su archivo autorizado_keys a/etc/ssh/username/Authorized_keys (junto con la propiedad adecuada para/etc/ssh/username y los permisos adecuados como requerido por sshd).

2
journeyer

Nada me funcionó. No se por que Probé cada solución.

Primero

ssh-copy-id: no copió id_rsa e id_rsa.pub

Segundo

ssh-agent $ Shell

ssh-add -L

ssh-add

ssh-copy-id -i remote-Host

Ambos no funcionaron. Supongo que tengo mala suerte. Alguien decía que cambiara el permiso de la carpeta .ssh desde la raíz. Pensé que no sería una mejor opción. Lo que estaba haciendo cuando mi caso anterior falló. Creé una nueva clave en el servidor y guardé esta clave en github/gitlab. Esa tampoco es una forma genial. Aquí probé una alternativa, espero que pueda ayudar a alguien.

Primero creo una carpeta en el servidor remoto con ese permiso de usuario que puede escribir en ella. Luego sigo los pasos a continuación en mi máquina local

cd ~/.ssh

scp -r * [email protected] **: path_to_writable_folder_on_remote_server

Y luego inicié sesión en el servidor remoto y luego

cd path_to_that_folder_where_I_copied_keys

& Entonces

mv * ~/.ssh

(Uf) Finalmente, funcionó.

0
Vineet