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_keys
archivo.
Pero, cuando pongo mi clave pública SSH en el authorized_keys
archivo, el servidor continúa pidiéndome la contraseña.
¿Qué hice mal?
Respuestas:
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
-v
bandera (o-vv
o-vvv
) para ofrecer más información. Es posible que pueda identificar su problema de esta manera.Aquí hay otras cosas para verificar.
/home/git/.ssh/authorized_keys
sea propiedad degit
./home/git/.ssh/authorized_keys
tiene un modo de 600 (-rw-------
).También verifique el
/etc/ssh/sshd_config
archivo.PubkeyAuthentication
debe establecerse enyes
AuthorizedKeysFile
directiva 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
.fuente
/var/log/auth.log
archivo? ¿Hay alguna manera de activar esto?sudo service ssh restart
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!)
fuente
Hay diferentes maneras de resolver esto: puede configurar
sshd
(lado del servidor) ossh
(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 alssh
comando:Si esto funciona, puede establecer la
PasswordAuthentication=no
opción de forma permanente en el archivo de configuración del cliente ssh en todo el/etc/ssh/ssh_config
sistema o~/.ssh/config
específico del usuario (para obtener más información, consulteman ssh_config
).fuente
/etc/ssh/ssh_config
) en los sistemas Debian / Ubuntu ya lo prefierePubkeyAuthentication
y prueba eso primero, como verás cuando invoquesssh
en modo detallado.¿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:
fuente
Si su carpeta de inicio está encriptada, entonces su
authorized_keys
archivo no es legible antes de iniciar sesión. Tienes que moverlo fuera de tu casa.Aquí se explica y cómo hacerlo: https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting
fuente
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.
fuente
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.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:
fuente
También puede agregar su clave al Agente SSH:
fuente
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_keys
degituser
fuente
En una máquina que ejecuta Ubuntu 18.04.02 LTS, la sugerencia de establecer permisos de
~/.ssh
600 no me funcionó. Tuve que establecer los permisos en 700, y luego las cosas funcionaron bien.fuente
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.
fuente
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:
fuente