No se puede lograr que la autenticación de clave pública SSH funcione [cerrada]

41

Mi servidor ejecuta CentOS 5.3. Estoy en una Mac con Leopard. No sé cuál es el responsable de esto:

Puedo iniciar sesión en mi servidor muy bien a través de la autenticación de contraseña. He seguido todos los pasos para configurar PKA (como se describe en http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-ssh-beyondshell.html ), pero cuando Yo uso SSH, se niega incluso a intentar la verificación de clave pública. Usando el comando

ssh -vvv user@host

(donde -vvv aumenta la verbosidad al nivel máximo) Obtengo el siguiente resultado relevante:

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

seguido de un mensaje para mi contraseña. Si trato de forzar el problema con

ssh -vvv -o PreferredAuthentications=publickey user@host

yo obtengo

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: No more authentication methods to try.

Entonces, aunque el servidor dice que acepta el método de autenticación de clave pública, y mi cliente SSH insiste en ello, soy rechazado. (Tenga en cuenta la ausencia evidente de una línea "Ofrecer clave pública:" arriba). ¿Alguna sugerencia?


fuente
simplemente use "ssh -v", no necesita más verbosidad e incluya toda la salida, no solo las líneas que cree que son importantes
cstamas
Esta pregunta se está cerrando porque ya no se puede responder y está atrayendo respuestas de baja calidad.
HopelessN00b

Respuestas:

44

Verifique que su máquina Centos tenga:

RSAAuthentication yes
PubkeyAuthentication yes

en sshd_config

y asegúrese de tener el permiso adecuado en el directorio ~ / .ssh / de la máquina centos.

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

debería hacer el truco.

pyhimys
fuente
1
¡los derechos y nombres de archivo correctos (a veces autorizado_keys2, a veces sin el 2) es muy importante!
brandstaetter
44
El permiso del archivo autorizado_claves es una pista muy importante. Gracias.
Kane
77
Es posible que también necesite hacerlo chmod go-w ~/si aún no lo es.
tylerl
1
También verifique si su directorio de inicio en el servidor remoto tiene permisos 755(como Jinyu Liu menciona a continuación)
Attila Fulop
1
En otros sistemas operativos, el archivo de configuración SSH también podría estar viviendo bajo:/etc/ssh/ssh_config
Yoshua Wuyts
17

Tuve un problema similar: la PC remota no podía usar la autenticación de clave pública para iniciar sesión en el servidor CentOs 6. El problema en mi caso estaba relacionado con SELinux: el directorio de inicio del usuario que intentaba iniciar sesión tenía contextos de seguridad de mensajes. Resolví esto usando la restoreconherramienta de esta manera:

restorecon -Rv /home
Gareth
fuente
2
Gracias Gareth! "restorecon -Rv /root/.ssh" funcionó muy bien.
tbroberg
Para explicarlo más a fondo: este comando le dice a SELinux que restablezca las etiquetas SELinux para archivos debajo /homede lo que usualmente están en el diseño del directorio /home.
rakslice
Si está restorecon -Rv /root
iniciando
13

1- verifique su / etc / ssh / sshd_config, asegúrese de tener

RSA Autenticación sí
Pubkey Autenticación sí

2- verifique el registro seguro de la máquina remota, busque el registro de errores de daemon sshd detallado. por ejemplo, en mi Ubuntu

# grep 'sshd' / var / log / secure | grep 'Autenticación rechazada' | cola -5
4 de agosto 06:20:22 xxx sshd [16860]: Autenticación rechazada: mala propiedad o modos para el directorio / home / xxx
4 de agosto 06:20:22 xxx sshd [16860]: Autenticación rechazada: mala propiedad o modos para el directorio / home / xxx
4 de agosto 06:21:21 xxx sshd [17028]: Autenticación rechazada: propiedad o modos incorrectos para el directorio / home / xxx
4 de agosto 06:21:21 xxx sshd [17028]: Autenticación rechazada: propiedad o modos incorrectos para el directorio / home / xxx
4 de agosto 06:27:39 xxx sshd [20362]: Autenticación rechazada: mala propiedad o modos para directorio / home / xxx

Luego verifique la propiedad y los modos para el directorio / home / xxx, tal vez necesite ejecutar esto

chmod 755 / inicio / xxx
Jinyu Liu
fuente
1
Verificar el archivo de registro del sistema es una pista muy importante.
Kane
1
Los permisos de directorio de inicio de 755 me ayudaron, ¡definitivamente es necesario!
Ben
11

Verifique que sus permisos sean correctos y que la estructura del archivo (específicamente la ortografía) sea correcta, tanto para máquinas locales como remotas. La URL a la que se refiere los declara todos, pero vale la pena comprobar que lo que tiene coincide. Sin embargo, normalmente los permisos arrojarán un error relevante.

¿Ha verificado que el sshd_config en su casilla CentOS 5.3 está configurado para permitir PubkeyAuthentication o RSAAuthentication?

Verifique los registros del servidor SSH en el sistema CentOS; puede proporcionar más información. No estoy seguro de si CentOS realiza la comprobación de la clave ssh en la lista negra que hace Debian, pero he visto rechazos de clave pública ssh que son relativamente silenciosos en lo que respecta a la salida -vvv, pero los registros explicaron con bastante claridad lo que estaba sucediendo

Daniel Lawson
fuente
7

¡Lo tengo! Resulta que era un problema del lado del cliente. (Creo que cualquier problema del lado del servidor habría producido una salida de depuración más útil). Por razones desconocidas para mí, en mi Mac, el archivo / etc / ssh_config tenía la línea

PubkeyAuthentication = no

Comenté esa línea, y ahora todo funciona bien.


fuente
4

Además de los modos de archivos / directorios, asegúrese de que la propiedad sea correcta. Un usuario debe tener su propio directorio de inicio, .ssh /, y sus archivos.

Tuve que correr chown -R $user:$user /home/$userpara superar mis fallas ssh.

Visser
fuente
+1, en uno de mis sistemas los permisos en .ssh eran correctos pero alguien había ingresado en el directorio de inicio de la cuenta 777.
GargantuChet
2

Compruebe también que puede proporcionar automáticamente una clave o no, use -i path / to / key si no es así o solo para probar

Jimsmithkka
fuente
2

Suena como un problema de configuración para mí. Como Daniel sugirió, hay dos cosas que verificar:

  1. Las claves SSH en $HOME/.ssh/authorized_keysson legibles; y
  2. SSHd está configurado para permitir el inicio de sesión con clave pública.
sybreon
fuente
2

Verifique el nombre de usuario con el que está intentando iniciar sesión. Por defecto, es su nombre de usuario en la máquina local.

Creotiv
fuente
1

La salida del cliente como en ssh -vrevelará que hay un problema en un determinado paso del protocolo, pero cuando se debe a algo en el servidor, el cliente no será informado de la causa. Verifique los archivos de registro del servidor para averiguar qué está mal. Es probable que tenga que estarlo rootpara tener permisos para hacerlo. Por ejemplo, para un sshdconfigurado para iniciar sesión en syslog, puede encontrar los mensajes en /var/log/secure. Como estos:

Authentication refused: bad ownership or modes for directory /home/you/.ssh
Authentication refused: bad ownership or modes for file /home/you/.ssh/authorized_keys

La razón en este caso era un defecto (estúpido) defaultde 0002. Eso significa, acceso de escritura para el grupo. (Nombre de grupo = nombre de usuario, pero aún así). El daemon SSH no confiará en los archivos que puedan ser manipulados por otros que no sean el usuario (bueno, y root, por supuesto). Puedes resolver el problema usando chmod.

chmod 700 ~/.ssh # solve the issue
chmod 720 ~/.ssh # reproduce the issue
# or similar for a file
Lumi
fuente
1

acabo de quedar atrapado en el mismo problema al acceder con fedora core 16 a cents 5.5

los troncos y los verbos se veían exactamente iguales

el problema era la clave pública, obtuvo algunos datos falsos, regenerarlo y publicarlo en el servidor sshd_, su cliente sshd_client está enviando la información clave pero no es reconocido por el servidor (no coincide con ninguna de las claves en claves_autorizadas)

Freaktor
fuente
-2

Otro mordido por esto. Después de una larga búsqueda resultó que estaba alimentando explícitamente ssh la clave pública (con la opción -i) en lugar de la clave privada. Doh!

Ellert van Koperen
fuente