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

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 a través de apt-get y pude conectarme al servidor usando putty con mi nombre de usuario y contraseña.

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

  1. Generó las claves usando PuTTYgen.
  2. Movió la clave pública a /etc/ssh/myusername/authorized_keys (Estoy usando directorios de inicio cifrados).
  3. Configurar sshd_config así:

    PubkeyAuthentication yesAuthorizedKeysFile /etc/ssh/%u/authorized_keysStrictModes noPasswordAuthentication noUsePAM yes

Cuando me conecto usando putty o WinSCP, aparece un error que dice que No hay métodos de autenticación compatibles disponibles (el servidor envió la clave pública).

Si corro sshd en el 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-1023Checking blacklist file /etc/ssh/blacklist.RSA-1023temporarily_use_uid: 1000/1000 (e=0/0)trying public key file /etc/ssh/username/authorized_keysfd4 clearing O_NONBLOCKrestore_uid: 0/0Failed publickey for username from 192.168.1.7 port 14343 ssh2Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]do_cleanup [preauth]monitor_read_log: child log fd closeddo_cleanupPAM: cleanup

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

Problema resuelto:

Parece que hubo un problema con mi archivo de clave pública. PuTTYgen creará un archivo de clave pública que se parece a:

---- BEGIN SSH2 PUBLIC KEY ----Comment: "rsa-key-20121022"AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8=---- END SSH2 PUBLIC KEY ----

Sin embargo, esto no funcionará, por lo que lo que debe hacer es abrir la clave en PuTTYgen y luego copiarla desde allí (esto da como resultado 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

Pega esto en authorized_keys entonces debería funcionar.

  1. Edite el /etc/ssh/sshd_config file.
  2. Cambio PasswordAuthentication y ChallengeResponseAuthentication a yes.

3a. Reinicie ssh /etc/init.d/ssh restart.
O
3b. mejor uso service sshd restart

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 de 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 modificarán el texto a medida que lo pegue, o harán algo con nuevas líneas o algo que invalide el archivo authorized_keys.

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 con el botón derecho en PuTTY para pegar la cadena de clave en la línea de comandos, funciona así (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 sobrescribir, por ejemplo:

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

Espero que eso ayude a alguien.

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

En nuestro caso, fue un problema con los permisos de archivo para authorized_keys en la carpeta de usuario del servidor. Tiene que ser -rw-r--r-- ... Fue -rw-rw-r--

ssh es muy quisquilloso con las permanentes de archivos.

RESOLVER:

  1. Debe descargar el PuTTYgen y generar una clave pública y una privada.
  2. He asignado una contraseña a mi clave privada.
  3. >>>a continuación, configure la clave privada en putty. Putty-SSH-Auth-Navega a tu privado.
  4. Asegúrese de tener la misma ruta para la clave privada y la pública.
  5. Debe configurar la clave pública en el servidor. (En mi caso, hablé con el tipo del 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.

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, Pageant. Lo actualicé de nuevo a Pageant allí y la conexión funcionó perfectamente después de eso.

En mi caso, tengo dos instancias de AWS. Uno de ellos funciona a la perfección, 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