Clave pública SSH: no hay métodos de autenticación compatibles disponibles (clave pública enviada por el servidor)

80

Tengo una configuración de servidor 12.10 en una máquina virtual con su red configurada en puente (esencialmente se verá como una computadora conectada a mi conmutador).

Instalé opensshd vía apt-gety pude conectarme al servidor usando masilla con mi nombre de usuario y contraseña.

Luego me puse a tratar de hacer que use la autenticación de clave pública / privada. Hice lo siguiente:

  1. Genera las claves usando PuttyGen.
  2. Moví la clave pública a /etc/ssh/myusername/authorized_keys(estoy usando directorios de inicio cifrados).
  3. Configurar sshd_configasí:

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

Cuando me conecto usando masilla o WinSCP, recibo un error que dice No hay métodos de autenticación compatibles disponibles (clave pública enviada por el servidor).

Si ejecuto sshden modo de depuración, veo:

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

¿Por qué sucede esto y cómo puedo solucionarlo?

F21
fuente
En mi caso, tengo dos instancias de AWS. Uno de ellos funciona sin problemas, el otro funciona cuando se conecta a través de Intellij Idea, pero no desde Putty, pero funcionaba al principio. Entonces, en mi caso, debe ser algo sobre la masilla
Marian Klühspies

Respuestas:

70

Problema resuelto:

Parece que hubo un problema con mi archivo de clave pública. PuttyGen creará un archivo de clave pública que se verá así:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

Sin embargo, esto no funcionará, así que lo que debe hacer es abrir la clave en PuttyGen y luego copiarla desde allí (esto hace que la clave esté en el formato correcto y en 1 línea):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

Pegue esto en, authorized_keysentonces debería funcionar.

F21
fuente
1
Abrí authorized_keysen vi y eliminé todos los saltos de línea y funcionó.
Lucas
1
¿Dónde se encuentra el archivo de clave pública? Solo estoy usando masilla.
Syler
1
Hice todas las cosas anteriores, pero aún así el servidor está enviando No hay métodos de autenticación compatibles disponibles (el servidor envió la clave pública)
Al-Alamin
¿Cómo sabías que esto no funcionaría / dónde encontraste el formato esperado?
Michael
Donde necesito pegar exactamente cuando dices "Pega esto en claves autorizadas, entonces debería funcionar". @ F21
Mahender Reddy Yasa
20
  1. Edita el /etc/ssh/sshd_configarchivo.
  2. Cambiar PasswordAuthenticationy ChallengeResponseAuthenticationpara yes.

3a. Reiniciar ssh /etc/init.d/ssh restart.
O
3b. mejor usasservice sshd restart

Cazador
fuente
de hecho, este es un comentario útil si tiene problemas para conectar los softwares vie ftp
cnu
¡Funciona para mi!
Asinox
8
Todo el propósito de autenticar a través del archivo clave está en evitar la autenticación de contraseña, por lo que en realidad se debe establecer PasswordAuthenticationa no.
Pere
Es la única respuesta que me ha ayudado. No necesitaba autenticación de clave pública / privada, pero recibía ese mensaje extraño.
Serge Rogatch
Gracias por ChallengeResponseAuthenticationresolverme el problema en Debian 10.0
realtebo
10

Solo un consejo que espero pueda ayudar a alguien más con los dolores de cabeza que tuve. F21 tiene razón en que necesita copiar la clave de la ventana PuTTYGen en lugar de guardar el archivo, pero después de copiar, la forma en que pega puede tener un impacto significativo en si su clave funcionará o no. Algunos editores alterarán el texto a medida que lo pegue, o harán algo con líneas nuevas o algo que invalide el archivo autorizado_claves.

Lo que he encontrado que es menos probable que se rompa es hacer eco de la cadena completa y redirigir la salida al archivo. Al hacer clic derecho en PuTTY para pegar la cadena de clave en la línea de comando, funciona de la siguiente manera (con el ejemplo anterior):

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

Terminarás con esto:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

Otra ventaja de este método es que puede agregar varias claves de esta manera usando >> para agregar en lugar de> para sobrescribir, por ejemplo:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

Espero que ayude a alguien.

Dave
fuente
Esto no funciona para las claves de 4096 bits ... creo que excede el límite de la terminal para los caracteres, creo
Freedo
1
Puede o no ser una buena idea eliminar esto de tu historial de bash después.
Jason Powers Murray
@JasonPowersMurray: es una clave pública. El sistema de criptografía de clave pública está diseñado para mantenerse seguro cuando se publica la clave, por lo que está bien registrar claves públicas en el historial de bash y en otros lugares.
David Cary
9

Ya estábamos usando el tipo correcto de clave (ppk en lugar de pem).

En nuestro caso, se trató de un problema con los permisos de archivos para claves_autorizadas en la carpeta de usuario del servidor. Tiene que ser -rw-r - r-- ... Era -rw-rw-r--

ssh es muy quisquilloso con los permisos de archivos.

Sharad
fuente
Gracias por señalarme en la dirección correcta. En nuestro caso, tanto el propietario como los permisos estaban equivocados.
Zsolti
¿Cómo cambiar los permisos de los archivos ya que no podemos acceder a través de ssh? alguna otra forma de hacer eso?
jit
1
El mío también era un problema de propiedad, grupo y permisos. Como se muestra aquí ( stackoverflow.com/a/36808935/384670 ), los permisos que tuve que usar fueron 600 para el archivo y 700 para el directorio. También cambié el propietario y el grupo a este usuario no root en cuestión.
M Katz
5

RESUELTO

  1. Necesita descargar puttyGEN y generar una clave pública y una privada.
  2. He asignado una contraseña a mi clave privada.
  3. luego configure la clave privada en masilla. Putty-> SSH-> Auth-> Browse to your private.
  4. Asegúrese de tener la misma ruta para la clave privada y pública.
  5. Debe configurar la clave pública en el servidor. (En mi caso, hablé con el servidor y le pregunté si podía agregar mi clave pública al servidor). Necesita la clave pública en el otro lado (servidor) de la conexión.
Matt.sinner
fuente
2
"Asegúrese de tener la misma ruta para la clave privada y pública". Eso no tiene nada que ver con eso. No tiene que residir su clave pública al lado de su clave privada ..
user3790897
5

En mi caso, la razón fue que el archivo de clave privada (.ppk) se había eliminado en el agente de autenticación Putty, es decir, el concurso. Acabo de actualizarlo nuevamente a Pageant y la conexión funcionó perfectamente después de eso.

Marko H
fuente