¿Clave SSH pidiéndome una frase de contraseña?


35

Tengo un par de claves pública / privada. Ninguno de ellos tiene ningún tipo de frase de contraseña asociada a ellos.

Cada vez que trato de usar ssh usando lo privado o lo público (y estoy bastante seguro de que solo debería usar la clave pública), me preguntan por una frase de contraseña y, por supuesto, no puedo conectarme.

¿Alguien tiene alguna idea de cómo solucionar esto? ¿Estoy escribiendo algún comando incorretamente? Estoy intentando ingresar a un servidor que configuré en mi archivo ~ / .ssh / config (correctamente, ya que esta misma configuración funciona en otro servidor) con la clave almacenada en ~ / .ec2 / key.ppk

También he intentado usar puttygen.exe para generar una nueva clave privada CON una frase de contraseña, y luego usar esa clave, y cuando escribo la frase de contraseña, todavía falla.

Respuestas:


28

Primero, es la clave privada que tendrá la frase de contraseña. Esto valida contra la clave pública almacenada en el servidor remoto.

La mejor suposición es que está intentando utilizar un ppkformato de clave de masilla de clave privada ( ) con openssh, esto no funciona ... PuTTYgen tiene una opción de exportación para openssh si este es el caso.

ssh-rsa AAAAB3NzaC1y...... etc

También supongo que el servidor al que está intentando hacer ssh tiene su clave pública almacenada correctamente en el archivo de clave autorizado (en ~/.ssh/authorized_keysgeneral).

Otra suposición sería que no se haya seleccionado la clave correcta. Algunas cosas que probaría son:

Restableciendo la frase clave usando ssh-keygen, de esta manera ...

$ ssh-keygen -f ~/.ec2/key.ppk -p

Esto confirmará si, de hecho, su clave ya tiene (o no) una frase de contraseña.

En segundo lugar, intentaría conectar usando una salida detallada, especificando su clave pública explícitamente:

$ ssh host -i ~/.ec2/key.ppk -vvv

Esto le dará más idea de lo que está sucediendo.


Correcto, esta es una clave generada por puttygen a partir de una clave que funciona en masilla. Cuando pongo masilla en el mismo servidor (desde la máquina que aloja la instancia de cygwin) funciona bien con la misma clave exacta. Cuando intento conectarme a través de ssh desde cygwin, se dispara. Estoy confundido sobre cómo hacer que esto funcione.
llaskin

66
Creo que los puntos de mrverrall es que el formato de archivo para la clave privada PuTTY no es el mismo que el formato de archivo utilizado para OpenSSH (el cliente ssh en cygwin). Entonces OpenSSH simplemente no está utilizando los datos de la clave privada porque no puede entender qué significan los datos. Pero PuTTY tiene una opción de "exportación", por lo que puede obtener datos en el formato "PEM" necesario.
Phil P

Este error también se da si el archivo está en el formato correcto, por lo tanto, verifique doble y triplemente si copió y pegó correctamente si lo creó manualmente.
Daniel Sokolowski

Es ssh-rsa AAAAB3NzaC1y...... etcel formato de openssh, ¿verdad? Tengo este formato en mi clave privada. El encabezado dice: PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6Pero el archivo se almacena como un archivo id_rsa. ¿Significa esto que todavía está en formato .ppk, aunque el nombre del archivo es soloid_rsa
Alpha_989

Descubrí la respuesta para los diferentes formatos aquí. En mi caso, aunque la extensión del archivo no tenía .ppk, todavía estaba en formato de masilla, lo que me confundió, ya que mostraba todo tipo de errores, pero no me daba ninguna pista directa de que el problema estaba en el formato de la clave : stackoverflow.com/a/44391850/4752883
alpha_989

18

Podrías ejecutar ssh-agent. Ver aquí para una discusión.

La versión corta que funcionó para mí (en bash):

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-rnRLi11880/agent.11880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11881; export SSH_AGENT_PID;
echo Agent pid 11881;

Tomé las 3 líneas que resuena y las ejecuté. Otra forma de hacerlo es tomar la salida de -s:

$ eval `ssh-agent -s`

Luego le agregué mis credenciales:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/me/.ssh/id_rsa: 
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

Ahora el agente proporciona las credenciales en lugar de que yo tenga que escribir mi frase de contraseña.

Creo que ssh-agent desaparece cuando lo hace el shell, por lo que esto debe ser programado al inicio para la máxima comodidad. El enlace que compartí describe las secuencias de comandos también.


4

Cuando configura su clave pública, probablemente (tal vez sin darse cuenta) la configura con una frase de contraseña.

Probablemente necesite comenzar de nuevo: no he usado puttygen, pero puede eliminar (o renombrar) la clave pública en su directorio .ssh, usarla ssh-keygenpara generar una nueva (asegurándose de no proporcionar una frase de contraseña), y luego comparta public_key con el archivo Authorized Keys en el servidor al que está intentando conectarse.

Es posible que también deba eliminar su antigua clave de frase de contraseña del archivo de claves autorizadas en el servidor al que se está conectando.


4

Verifique que la clave privada id_rsano tenga saltos de línea adicionales al final, en algunos casos los saltos de línea adicionales harán que ssh-keygen solicite la frase de contraseña, intente esto:

sed  '/^$/d' /path/to/key > id_rsa

prueba:

ssh-keygen -yf id_rsa

2
Dios mío, este era mi problema. ¡una nueva línea adicional después de que -----END RSA PRIVATE KEY-----causara que pidiera la frase de contraseña en una clave que no tenía un conjunto!
edk750

3

Una cosa para verificar, si su archivo sshd_config tiene StrictModes = yes, entonces el directorio $ HOME o $ HOME / .ssh no debe poder escribirse en un grupo u otro. De lo contrario, la autenticación falla sin importar qué.


1

Cometí el error de sobrescribir accidentalmente mi archivo ~ / .ssh / id_rsa con mi ~ / .ssh / id_rsa.pub. Hacer eso hará que ssh solicite una frase de contraseña.


0

Me encontré con este problema el otro día. Específicamente, estaba tratando de copiar / pegar una clave privada de AWS de una máquina a otra.

Tengo la mala costumbre de perder el primer o el último personaje. Resulta que si no toma cada guión al final de su clave privada, a pesar de que no tiene nada que ver con el texto de la clave en sí, se le pedirá una frase de contraseña para la clave privada hasta que agregue todos los caracteres de la clave clave que copió (en mi caso, esto significaba agregar un solo guión al final de la clave).

Supongo que esto significa que la mejor práctica es SSH el archivo de texto a través del cable en lugar de intentar copiar y pegar entre las ventanas de Terminal.


0

En OSX pude simplemente ejecutar:

$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)

La aplicación Keychain Access almacenó la contraseña, que se encuentra en la carpeta Aplicaciones> Utilidades. Acabo de ingresar id_en el campo de búsqueda.


0

Intente ver los archivos de registro en el servidor. Consulte / var / log / auth log (por ejemplo, / var / log / authlog para OpenSSH, aunque he visto que algunos sistemas operativos usan OpenSSH portátil y /var/log/auth.log) y comprueban el final de ese archivo.

Las causas más comunes que he visto son los permisos incorrectos (como se señala en la respuesta de TD1 ), aunque otros problemas podrían ser con la clave pública (almacenada en el servidor) que no está en el archivo correcto, o que la clave está siendo comentada, o un nombre de usuario mal escrito

También puede ser útil (para la resolución de problemas) darle a la cuenta una frase de contraseña temporalmente, solo para verificar que la cuenta pueda iniciar sesión correctamente cuando lo haga.

Si ver el archivo de registro no lo lleva rápidamente a una resolución, sugiero publicar una nueva pregunta (ya que esta es una gran pregunta generalizada) que incluye los detalles específicos del archivo de registro, para que se puedan proporcionar instrucciones más específicas.


0

En mi equipo, cuando esto sucede, no es un problema con nada localmente. La clave y / o acceso ssh del usuario no se ha configurado correctamente en el servidor al que se está conectando (en nuestro caso, una plataforma de alojamiento). Por alguna razón, esto desencadena una solicitud de una clave ssh inexistente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.