clave pública siempre solicita contraseña y frase clave

19

Estoy tratando de SSH desde un NAS a un servidor web usando una clave pública. El usuario NAS es 'root' y el usuario del servidor web es 'backup'

Tengo todos los permisos configurados correctamente y cuando depuro la conexión SSH obtengo: (último pequeño fragmento de la depuración)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

Estoy usando el comando:

ssh -v -i /root/.ssh/id_dsa.pub [email protected]

El hecho de que esté pidiendo una frase de contraseña es una buena señal, pero no quiero que solicite esto o una contraseña (que aparece después si presiono 'regresar' en la frase de contraseña)

Andrew Atkinson
fuente

Respuestas:

24

Eso es porque su clave privada está encriptada ...

Puede agregar su clave a un agente ssh usando ssh-addo eliminar la frase de contraseña (y con ella el cifrado) de la clave usando el siguiente comando:

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


EDITAR

Oh, me acabo de dar cuenta de que intentas usar tu clave pública para autenticarte ... Quieres usar la clave privada allí:

ssh -v -i /root/.ssh/id_dsa [email protected]

Y solo para estar absolutamente seguro, el contenido del archivo id_dsa.pubentra en ~backup/.ssh/authorized_keysel servidor web. Puede usar el siguiente comando para hacerlo automáticamente

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
andrekeller
fuente
Todavía tengo el problema. Funcionó y me otorgó 'su identificación se ha guardado con la nueva frase de contraseña'. pero aún así pide una frase de contraseña la próxima vez que intento iniciar sesión. No estoy seguro de qué más probar ...
Andrew Atkinson
comprobar mi respuesta actualizada ... tal vez eso ayuda ...
andrekeller
gracias, parece que posiblemente estaba tratando de comparar la clave pública con la clave pública ... No necesitaba eliminar la frase de contraseña
Andrew Atkinson
El hecho era que estaba usando mi pub para autenticar (un error estúpido). ¡Gracias!
Qix
6

Esto me sucedió cuando la clave privada que tenía no estaba en formato OpenSSH.

Originalmente generé mi clave en Windows usando PuttyGen y me devolvieron con lo mismo.

Pude solucionarlo cargando la clave en PuttyGen y haciendo clic en "Conversiones" para obtener el formato OpenSSH.

Locane
fuente
2

Hay algunas cosas

Principalmente, si la CLAVE solicita una contraseña, la clave se generó con ella. En segundo lugar, si el sistema solicita una contraseña después, la clave no se autentica. Es decir, tendrá que regenerar su clave SSH (o cambiarla como lo sugiere @rbtux) y corregir los archivos autorizado_claves.

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C "comentario opcional" -f id_examplekey

Los elementos entre llaves son opciones, tipo y tamaño de bit (para decir lo obvio: dsa> rsa, 4096> 1024 - en términos de "seguridad").

Luego, debe agregar la clave pública (.pub) a los archivos authorized_keysy authorized_keys2(es una idea errónea común decir que el .pub es para uso local, sin embargo, se debe comparar con) en la .sshcarpeta del servidor .

$ cat id_examplekey.pub >> autorizado_claves {, 2}

Luego, por su parte, debe asegurarse de que los permisos clave son chmod 600 id_exampley para evitar escribir todo eso, puede configurar el archivo de configuración: ~/.ssh/configen su cuadro local (que es un esqueleto, puede personalizar esto una tonelada):

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey
nerdwaller
fuente
pero la sección en la depuración que dice: debug1: el servidor acepta la clave: pkalg ssh-dss blen 433, ¿no significa esto que la clave ha sido aceptada? He recreado de nuevo sin frase de contraseña, ¿sigue siendo el mismo? - ¿Se me acabaron las ideas? Gracias
Andrew Atkinson
@AndrewAtkinson Parece que lo tienes a continuación. Necesita la clave privada en la máquina de (local, cliente, lo que sea) y la clave public.pub agregada a los archivos autorizado_claves. Mis otras sugerencias deberían ayudarlo a ahorrar tiempo: D ¡Buena suerte!
nerdwaller
Usted escribe "Principalmente, si la CLAVE está pidiendo una contraseña, la clave se generó con ella". <- sí, aunque acabo de probar lo que hizo el interrogador, entonces, haciendo -i con la clave pública $ ssh user@comp -i ~/.ssh/id_rsa.puby dijo permisos incorrectos y privados se ignorará la clave ... así que cambié los permisos a 600 como sería id_rsa, y solicitó una frase de contraseña. Entonces, de hecho, pedirá una frase de contraseña si especifica la clave pública, a pesar de que tanto la clave pública como la clave privada no se generaron con una frase de contraseña
barlop
2

Para mí, ya que la clave en sí estaba encriptada, seguí los siguientes pasos:

  • Inicie ssh-agent: $ ssh-agent bash
  • Agregue la clave de identidad estándar al administrador de claves: $ ssh-add
  • Si desea agregar una clave diferente, entonces: $ ssh-add /location/of/key

Para inspeccionar en cualquier momento, la lista de claves cargadas actualmente:

$ ssh-add -l

Se pueden obtener más detalles en este enlace

Sibi
fuente
1

prueba https://wiki.gentoo.org/wiki/Keychain

Es una especie de envoltura ssh-agentyssh-add

Pros: No es necesario ingresar la contraseña repetidamente siempre que no reinicies. Podría ser utilizado en crontab.

Puede ser de ayuda.

Gon
fuente
1

Podría deberse a que está utilizando una clave DSA que está deshabilitada de manera predeterminada en OpenSSH v7.

Si no puede cambiar el par de claves, una posible solución será decirle a su demonio SSH en webserver.com que acepte esos tipos de Clave, actualizando /etc/ssh/sshd_configo equivalente agregando la siguiente línea

PubkeyAcceptedKeyTypes=+ssh-dss

Y luego reiniciando el servicio

/etc/init.d/ssh restart                     # or equivalent
mosh442
fuente
0

En Mac OSX, puede agregar su clave privada al llavero usando el comando:

ssh-add -K /path/to/private_key

Si su clave privada se almacena en ~ / .ssh y se llama id_rsa:

ssh-add -K ~/.ssh/id_rsa

Luego se le pedirá su contraseña, que se almacenará en su llavero.

Groot
fuente
¿Qué debo hacer en el cliente Linux si el cliente Mac funciona?
bbaassssiiee