El servidor sigue pidiendo contraseña después de haber copiado mi clave pública SSH en claves_autorizadas

44

Tengo un servidor Ubuntu, que se ejecuta en una nube. Creé un usuario ( git). En la carpeta /home/git, he creado el .ssh/directorio y el authorized_keysarchivo.

Pero, cuando pongo mi clave pública SSH en el authorized_keysarchivo, el servidor continúa pidiéndome la contraseña.

¿Qué hice mal?

Luis Dalmolin
fuente
¿Dónde pones tu público? en el usuario git o en la raíz? ¿Cómo se accede? como ssh <you> @ <server> o <git> @ <server> o root @ <server> ... verifique eso y agregue más información.
maniat1k

Respuestas:

42

En el lado del servidor, el demonio ssh registrará errores /var/log/auth.log, así que verifique ese archivo para ver qué se informa.

Del lado del cliente, al establecer la conexión puede añadir la -vbandera (o -vvo -vvv) para ofrecer más información. Es posible que pueda identificar su problema de esta manera.

Aquí hay otras cosas para verificar.

  • Asegúrese de que /home/git/.ssh/authorized_keyssea ​​propiedad de git.
  • Asegúrese de que /home/git/.ssh/authorized_keystiene un modo de 600 ( -rw-------).

También verifique el /etc/ssh/sshd_configarchivo.

  • PubkeyAuthentication debe establecerse en yes
  • También existe la AuthorizedKeysFiledirectiva que determina la ruta donde deben ubicarse las claves autorizadas. Asegúrese de que esté comentado o en el valor predeterminado de %h/.ssh/authorized_keys.
xeyes
fuente
¡Gracias! ¡Probaré estas opciones y volveré más tarde para recibir comentarios!
Luis Dalmolin
¿Qué haces si no ves un /var/log/auth.logarchivo? ¿Hay alguna manera de activar esto?
Steve Robbins
1
Los registros pueden estar en / var / log / secure si no tiene un /var/log/auth.log
CoverosGene
Error tonto, había scp-ed el archivo .pub justo dentro de la carpeta .ssh en el servidor al que quería conectarme. Asegúrese de moverlo a la carpeta autorizada_claves.
CenterOrbit
También tuve que eliminar los permisos de escritura grupal de mi directorio de inicio. Luego reinicié ssh consudo service ssh restart
Dylan Pierce
19

También asegúrese de que su directorio personal de usuario (en su caso, / home / git) solo pueda ser escrito por usted. Tuve este problema una vez porque mi directorio personal era de escritura grupal. /var/log/auth.log dijo en él: "Autenticación rechazada: mala propiedad o modos para el directorio / home / chuck". (¡Esto es para asegurarse de que no use un archivo de claves autorizadas con el que alguien más que usted haya estado jugando!)

centipedefarmer
fuente
Si bien esto es útil, creo que es más una adición a la respuesta de xeyes .
gertvdijk
1
¡Dios mío, muchas gracias! Me ardían los ojos porque toda la búsqueda que hice en google. ¡Por fin funcionó! Muchas gracias.
GTRONICK
Hombre gracias! Pasé horas buscando una solución ... y esto resolvió todos mis problemas.
Afaria
Sip. eso fue todo.
Me
También verifique en / etc / passwd cuál es el directorio de inicio del usuario. Mi extraño problema era que no tenía uno estándar
drodsou
5

Hay diferentes maneras de resolver esto: puede configurar sshd(lado del servidor) o ssh(lado del cliente) para que no use la autenticación de contraseña. Deshabilitar la autenticación de contraseña en el servidor hace que su servidor sea más seguro, pero tendrá problemas si pierde su clave.

Para hacer ssh(del lado del cliente) usando la autenticación de pubkey, agregue algunas opciones al sshcomando:

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

Si esto funciona, puede establecer la PasswordAuthentication=noopción de forma permanente en el archivo de configuración del cliente ssh en todo el /etc/ssh/ssh_configsistema o ~/.ssh/configespecífico del usuario (para obtener más información, consulte man ssh_config).

Tohuwawohu
fuente
1
Por defecto, toda la configuración del cliente SSH ( /etc/ssh/ssh_config) en los sistemas Debian / Ubuntu ya lo prefiere PubkeyAuthentication y prueba eso primero, como verás cuando invoques sshen modo detallado.
gertvdijk
3

¿Está utilizando ~ / .ssh / config en su máquina local? Me he encontrado con este problema cuando uso la directiva IdentityFile en el archivo de configuración y apunto a la clave pública. Por ejemplo:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect
usuario1576
fuente
1

Otra cosa para verificar es si hay retornos de carro adicionales en su clave pública. Seguí los consejos anteriores para revisar el /var/log/auth.log y vi un error al leer la clave. La clave tenía aproximadamente dos líneas de largo en lugar de cuatro. Hubo retornos de carro adicionales incrustados en la clave.

Cuando use el editor vi, use shift-j para unir las líneas y borrar el espacio extra en la cadena de teclas.

Víctor
fuente
1
Tripliqué los permisos verificados y sshd_config. Golpeé mi cabeza contra la pared durante media hora. Este fue mi error! De alguna manera, me he acostumbrado a terminar todos los archivos que edito manualmente con un salto de línea adicional. Incluso con una tecla y un retorno de carro al final , es suficiente para estropear la autorización.
jrhorn424
Asegúrese de tener el ----- END RSA PRIVATE KEY ----- bit también.
tobych
1

Si tiene varias claves privadas, use el modificador -v en su comando de conexión ssh para verificar si sus otras claves principales están siendo utilizadas para intentar conectarse. Si no lo están, dígale al cliente ssh que los use con el siguiente comando:

ssh-add path/to/private/key
Max
fuente
1

También puede agregar su clave al Agente SSH:

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)
TTT
fuente
0

También podría ser que estás llamando

sudo git clone gituser@domain:repo.git

donde la clave ssh de los usuarios raíz no se ha agregado a la authorized_keysdegituser

Stevie G
fuente
0

En una máquina que ejecuta Ubuntu 18.04.02 LTS, la sugerencia de establecer permisos de ~/.ssh600 no me funcionó. Tuve que establecer los permisos en 700, y luego las cosas funcionaron bien.

azaghal
fuente
0

Tuve mi directorio .ssh / y los permisos de archivo autorizadas_keys correctos pero encontré este problema de "solicitud de contraseña" debido a un problema diferente, autoinducido.

Había usado un resaltado basado en el mouse y copiar / pegar para copiar la información de mi id_rsa.pub local en el archivo autorizado_keys en el servidor. Esto copió con éxito los datos como una sola línea, pero allí había espacios no deseados al final de las líneas visibles que eran difíciles de ver al editar el archivo con vi. Una vez que eliminé estos espacios no deseados, pude entrar bien.

Keith
fuente
0

Entonces, lo que me sucedió es que tengo 2 máquinas virtuales para acceder desde mi máquina local (2 claves id_rsa.pub e id_rsa2.pub). Me di cuenta de que mi conexión ssh está usando id_rsa.pub por defecto para cualquier conexión ssh [email protected]. Resolví mi problema agregando un archivo de configuración y especifico la identidad que se utilizará para cada host de la siguiente manera:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
Aymen Alsaadi
fuente