Tengo problemas para usar claves autorizadas para iniciar sesión en SSH en un servidor remoto. Los mensajes de error que recibo se ven así:
OpenSSH_5.2p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to xx.xx.xx [xxx.xx.xx.xx] port 22.
debug1: Connection established.
debug3: Not a RSA1 key file /Users/bfenker/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
...
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /Users/bfenker/.ssh/id_rsa type 1
ssh_exchange_identification: Connection closed by remote host
Otras preguntas en este sitio han publicado preguntas similares, y la solución generalmente fue verificar dos veces todos los permisos en el lado del cliente, lo que hice:
drwxr-xr-x+ 23 bfenker staff 782 May 8 11:02 bfenker
drwx------ 8 bfenker staff 272 May 8 10:05 .ssh
-rw------- 1 bfenker staff 1675 May 8 09:51 id_rsa
-rw-r--r-- 1 bfenker staff 418 May 8 09:51 id_rsa.pub
-rw------- 1 bfenker staff 999 May 8 09:46 identity
-rw-r--r-- 1 bfenker staff 663 May 8 09:46 identity.pub
-rw-r--r-- 1 bfenker staff 416 May 8 09:06 known_hosts
Puedo usar la clave autorizada para SSH en otro servidor y desde este servidor SSH en el servidor que quiero. Esta es una solución pasable que estoy intentando solucionar, pero creo que también muestra que tanto mi cliente como el servidor están configurados correctamente.
Tenga en cuenta que cuando SSH con éxito en un servidor diferente, recibo los mismos mensajes de error, pero parece recuperarse comenzando con las líneas:
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
¿Alguien sabe por qué esto funciona en algunos casos pero no en el caso que quiero? Cualquier otra sugerencia sería muy apreciada!
/etc/hosts.allow
y el servidor/etc/hosts.deny
?Respuestas:
Necroquestion! Basado en el hecho de que puede usar esta clave para iniciar sesión en otro servidor @ michael-hampton está en el camino correcto: hay algo (firewall / tcp wrappers / sshd config) en el servidor de destino que niega el acceso. Toda esta charla sobre formatos de clave incorrectos es una pista falsa basada en la interpretación incorrecta de la información de depuración. La línea
indica que ssh pudo entender la clave.
fuente
Su clave SSH está almacenada en el formato incorrecto. OpenSSH utiliza claves que se colocan en una sola línea. Necesita
ssh-keygen
con-i
y-m
opciones, verman ssh-keygen
. Probablemente uno de estos:Use la salida como nuevo archivo de clave (
ssh-keygen ... >newkeyfile
).Editar 1:
Tenga en cuenta esto: "Esta opción leerá un archivo de clave privada (o pública) sin cifrar "
Por lo tanto, es probable que un programa que comprenda ese formato deba cambiar el archivo a uno sin frase de contraseña.
fuente
-m
opción, y probar sin la-m
opción me da este error:buffer_get_string_ret: bad string length 813827235
key_from_blob: can't read key type
decode blob failed.
putty
Windows. Pero la masilla es tan agradable que ofrece ambos formatos de manera muy conveniente ... (al menos para las claves públicas)buffer_get_string_ret: bad string length 813827235
La primera línea de mi archivo de clave es-----BEGIN RSA PRIVATE KEY-----
y comenzando en la siguiente línea hay una larga lista de caracteres alfanuméricos. @Hauke LagingPrimero debe verificar sus registros sshd. es decir
Dependiendo del archivo de distribución de Unix con registro de seguridad puede diferir. Pero cuando encuentre si, debería indicar la razón por la que no puede iniciar sesión.
fuente
También me enfrenté a este problema recientemente. En mi caso, todos los permisos eran correctos, incluidos .ssh, el archivo rsa, el directorio de inicio y todo lo relacionado con el usuario. El problema era que tenía una clave pública generada previamente en .ssh que no se correspondía con la clave privada que estaba usando para iniciar sesión. La eliminación de la clave pública de .ssh solucionó el problema.
Estaba usando ssh-keygen para crear el directorio .ssh que resultó en esta clave de publicación y, por lo tanto, el problema.
fuente
Siento que las respuestas aquí no son muy claras. La respuesta de Mark Wagner lo cubre, pero no explica completamente la situación.
Las líneas en la salida tienen como prefijo sus niveles de depuración, lo que también da una pista de su importancia: pero los números más bajos son más significativos. El
debug3:
material es mucho menos importante quedebug1:
Cuando se lee el archivo de clave, ssh primero intenta analizarlo como la clave RSA en desuso (ahora llamada "RSA1"), esas claves comienzan con
SSH PRIVATE KEY FILE FORMAT
un número de versión. Todas las nuevas claves RSA comienzan-----BEGIN RSA PRIVATE KEY-----
. Aquí hay un intento de inicio de sesión en el queidentity
hay una antigua clave de estilo RSA1 yid_rsa
un nuevo estilo.En este punto, ha identificado los tipos de clave en los archivos
identity
comotype 0
yid_rsa
comotype 1
. Los otros archivos que verifica no existen y son asítype -1
.Como se trata del protocolo 2, la clave RSA del protocolo 1
identity
se ignorará durante el intercambio de claves.Aquí nos recuerda los archivos clave que quiere usar. No estoy seguro de por qué no ha rechazado los archivos faltantes, solo el archivo de protocolo 1, pero ...
Y aquí ofrece la
id_rsa
clave y se acepta.Entonces, en resumen, el problema en el título de la pregunta es un arenque rojo que proviene de ssh intentando múltiples formas de analizar las claves que encuentra, no un problema real con una clave.
fuente
Tuve el mismo problema en mi MacBook Pro con MacOS 10.7.5. No había nada malo con mis claves, es solo que están encriptadas (con una frase de contraseña, como se supone que debes hacer) y no estaban encriptadas por ssh correctamente. Parece que
ssh-agent
está teniendo problemas.De acuerdo con este artículo , intente esto:
Ponga
/usr/bin/ssh-agent
sus elementos de inicio de sesión (Preferencias del sistema -> Usuarios y grupos -> seleccione usuario -> Elementos de inicio de sesión). Es muy difícil navegar/usr/bin
en el cuadro de diálogo, por lo que el artículo sugiere hacer un enlace en su directorio de inicio (ln -s /usr/bin/ssh-agent
) que puede eliminar una vez que lo haya colocado en Elementos de inicio de sesión.Salga de Terminal.app
Reiniciar la máquina.
Abra la Terminal y vuelva a intentar su comando ssh.
Funcionó para mí (al menos, lo ha hecho una vez).
fuente