Estoy tratando de ingresar a un servidor CentOS sobre el cual no tengo control ... el administrador ha agregado mi clave pública al servidor e insiste en que la falla es mía, pero no puedo entender qué está mal.
Configuración en .ssh:
tim@tim-UX31A:~$ cat ~/.ssh/config
User root
PasswordAuthentication no
IdentityFile ~/.ssh/id_rsa
Permiso en mis archivos clave:
tim@tim-UX31A:~$ ls -l ~/.ssh/id_rsa*
-rw------- 1 tim tim 3326 Okt 20 17:28 /home/tim/.ssh/id_rsa
-rw-r--r-- 1 tim tim 746 Okt 20 17:28 /home/tim/.ssh/id_rsa.pub
Registro de conexión que no puedo entender:
tim@tim-UX31A:~$ ssh -vvv [email protected]
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g 1 Mar 2016
debug1: Reading configuration data /home/tim/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "10.0.12.28" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 10.0.12.28 [10.0.12.28] port 22.
debug1: Connection established.
debug1: identity file /home/tim/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/tim/.ssh/id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to 10.0.12.28:22 as 'root'
debug3: hostkeys_foreach: reading file "/home/tim/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/tim/.ssh/known_hosts:3
debug3: load_hostkeys: loaded 1 keys from 10.0.12.28
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c
debug2: host key algorithms: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected],zlib
debug2: compression stoc: none,[email protected],zlib
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: host key algorithms: ssh-rsa,ecdsa-sha2-nistp256
debug2: ciphers ctos: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: ciphers stoc: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 31
debug1: Server host key:
debug3: hostkeys_foreach: reading file "/home/tim/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/tim/.ssh/known_hosts:3
debug3: load_hostkeys: loaded 1 keys from 10.0.12.28
debug1: Host '10.0.12.28' is known and matches the ECDSA host key.
debug1: Found key in /home/tim/.ssh/known_hosts:3
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug2: key: /home/tim/.ssh/id_rsa (0x55ee619ab2b0), explicit, agent
debug2: key: /home/tim/.ssh/id_rsa (0x55ee619bcfa0), agent
debug2: key: tim@Tim-UX31A-Debian (0x55ee619b9370), agent
debug3: send packet: type 5
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive
debug3: authmethod_lookup gssapi-keyex
debug3: remaining preferred: gssapi-with-mic,publickey,keyboard-interactive
debug3: authmethod_is_enabled gssapi-keyex
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug2: we did not send a packet, disable method
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering RSA public key: tim@Tim-UX31A-Debian
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
ssh [email protected]
el registro menciona Kerberos que el servidor CentOS podría ser Dominio integrado (AD, IPA, ...). Tienes que averiguar qué usuario debes usar. Pregúntale al administrador. Por ejemplo, estamos utilizando IPA, por lo que permitimos a los usuarios conectarse a ciertos servidores con su cuenta de dominio IPA y su par de claves y, si es necesario, pueden sudo. Sin acceso root :)Respuestas:
Esto generalmente resolverá la mayoría de los problemas de permisos de clave autorizados por SSH en el lado del servidor , suponiendo que alguien no haya realizado cambios adicionales en los permisos.
Si su administrador creó el directorio .ssh / o el archivo .ssh / Authorized_keys como root (que es la forma más común de lograrlo), entonces no está permitido que el archivo sea propiedad de otro usuario (¡incluso si es root!).
Userify (descargo de responsabilidad: cofundador) hace esto exactamente de la misma manera .. https://github.com/userify/shim/blob/master/shim.py#L285
fuente
sudo chown $USER:$USER ~/ -R; sudo chmod o-rwx ~/ -R
lo que ahorrará tiempo de escritura, pero podría ser más difícil de entender para un novatoTuve exactamente el mismo problema en dos servidores: un Linux con Debian Stretch y un NAS (Synology DS715)
Resultó que en ambos casos, los permisos del directorio de inicio en el servidor eran incorrectos
el auth.log en el servidor fue muy útil
en Linux, tenía el bit de escritura / grupo activado (drwxrwxr - x), así que tuve que eliminar al menos el grupo de escritura (chmod gw ~ /) y luego funcionó
en Synology, por alguna razón, había un poco pegajoso
Tuve que cambiarlo con
y luego podría conectarme sin contraseña
fuente
chmod -t
... Terminé con:admin@SYN:~$ ls -ald . .ssh .ssh/* drwxr-xr-x 6 admin users 4096 Jan 10 15:54 . drwx------ 2 admin users 4096 Jan 10 15:54 .ssh -rwx------ 1 admin users 401 Jan 10 15:54 .ssh/authorized_keys -rw------- 1 admin users 1679 Jan 10 15:49 .ssh/id_rsa -rwxr--r-- 1 admin users 396 Jan 10 15:49 .ssh/id_rsa.pub -rwx------ 1 admin users 396 Jan 10 10:04 .ssh/known_hosts
Cuando uso CentOS 7, y estoy seguro, también se aplica a otros sistemas operativos Linux que usan sshd. Con el acceso raíz, puede determinar más acerca de por qué la autenticación puede estar fallando. Para hacer esto:
vi /etc/ssh/sshd_config
SyslogFacility AUTH LogLevel INFO
systemctl restart sshd
tail -l /var/log/messages
Por ejemplo, estaba experimentando algunos de los mismos problemas mencionados anteriormente.
Utilizando estos pasos pude confirmar que el problema eran los permisos en el archivo autorizado_claves. Al configurar chmod en 644 en el archivo de claves autorizado de mi usuario, se solucionó el problema.
fuente
Parece que los permisos en su
.ssh
carpeta no copiaron + pegaron correctamente. ¿Podría agregarlo nuevamente?Si el modo estricto está habilitado, entonces debemos asegurarnos de que
.ssh
tenga los permisos correctos de:.ssh/
debería tener permisos0700/rwx------
.ssh/*.pub
los archivos deben ser644/rw-r--r--
.ssh/*
(otros archivos en .ssh)0600/rw-------
¿Cómo te parecen las cosas con permiso?
fuente
En caso de que alguien tropiece con esta respuesta, ninguna de las recomendaciones funcionó en mi escenario. Al final, el problema fue que había creado una cuenta sin contraseña establecida. Una vez que configuré la contraseña usando
usermod -p "my password" username
y luego desbloqueé a la fuerza la cuenta,usermod -U username
todo era color de rosa.fuente
He tenido un problema similar , donde la conexión ssh prueba la clave
~/.ssh/id_rsa
antes de detenerse inesperadamente:En mi caso, se debió a un viejo archivo de clave pública en el
.ssh
directorio:Mover / eliminar
id_rsa.pub
del.ssh
directorio resolvió el problema.Por lo que entiendo: cuando hay una clave pública presente en el lado del cliente, SSH 1st valida la clave privada en su contra. Si falla, no intentará usar la clave privada para conectarse de forma remota.
Envié un correo electrónico a la lista de correo de openssh: https://lists.mindrot.org/pipermail/openssh-unix-dev/2016-April/035048.html .
fuente
openssh-8.0p1-5.fc30.x86_64
por cierto. Tenía la clave pública del servidor anterior con el mismo nombre que el nuevofedora@(baloo).sshkey.pub
, que sefedora@(baloo).sshkey
pasa en la línea de comando con la-i
opción. La autenticación falló con la nueva clave del servidor encontrada en la nuevafedora@(baloo).sshkey
: una clave RSA.Nos encontramos con este problema. Los permisos y la propiedad de los archivos .ssh fueron correctos. En / var / log / messages encontramos:
Entonces, la solución para el desarrollador vm donde no nos importa la seguridad es deshabilitar selinux. Edite / etc / sysconfig / selinux y cambie SELINUX = disabled y reinicie.
fuente
Por si acaso esto también salva a alguien. Intenté copiar una clave de mi máquina Ubuntu 18.04 a 2 servidores CentOS 7. Solía
ssh-copy-id
transferirlos. Uno funcionó, el otro no. Así que revisé todos los permisos de depuración y no encontré nada. Así que finalmente levanté el archivo/etc/ssh/sshd_config
en ambos servidores y pasé línea por línea a través de ellos. Finalmente lo encontré, probablemente algo que alguien modificó mucho antes de que me pusiera a trabajar.Uno lee:
AuthorizedKeysFile .ssh/authorized_keys
Y otra lectura:
AuthorizedKeysFile ~/.ssh/authorized_keys
que estaba en el servidor que no aceptaba mis claves. Obviamente, mirando entre los dos archivos y observando el comentario que indica que los patrones de búsqueda predeterminados no incluyen el inicio,~/
lo eliminé y reinicié sshd. Problema resuelto.fuente
También encontré este problema. setroubleshoot no parecía funcionar en mi entorno, por lo que no había tal registro en / var / log / messages. Deshabilitar SELinux no era una opción para mí, así que lo hice
Después de ese inicio de sesión con la clave rsa funcionó bien.
fuente
La razón en mi caso fue una opción personalizada
AuthorizedKeysFile
en el archivo/etc/ssh/sshd_config
. Se configuró en el directorio de inicio de otro usuario (/home/webmaster/.ssh/authorized_keys
), por lo que el usuario que estaba intentando iniciar sesión no tenía acceso a ese archivo / directorio.Después de cambiarlo y reiniciar ssh-server (
service ssh restart
) todo volvió a la normalidad. Puedo iniciar sesión con mi clave privada ahora.fuente
En nuestro caso, los problemas estaban relacionados con el hecho de que nuestro firewall y las reglas de NAT no estaban configuradas correctamente.
el puerto 22 se dirigía al servidor incorrecto donde no se reconocían nuestras claves y nuestro usuario.
Si alguien llega a este punto. tcpdump y telnet pueden ser tus amigos
Notará que estos dos servidores tienen diferentes versiones de openssh. Esto me ayudó a detectar el problema bastante rápido. Si sus hosts están utilizando las mismas versiones ssh, tendrá que intentar hacer un seguimiento empaquetado en el destino para ver si el tráfico está llegando al destino.
Ssh puede generar mucho tráfico, lo que hace que sea difícil encontrar lo que está buscando.
Esto me ayudo
Intente hacer telnet desde un servidor diferente 3 no su computadora actual @ [mylocalip]. Desea ver qué tráfico llega realmente a su servidor.
fuente
Un registro de errores del lado del cliente que termina así:
puede deberse a una restricción del lado del servidor (remota) en el inicio de sesión raíz cuando el archivo de configuración sshd contiene:
La sugerencia de JonCav de habilitar el registro fue útil para depurar este problema. Si bien la depuración del lado del cliente fue notablemente inútil, colocar lo siguiente en sshd_config del servidor sshd archivo :
terminó produciendo mensajes de registro útiles:
En el caso de que solo falle el inicio de sesión raíz , y siempre que su política de seguridad permita el uso de solo autenticación basada en claves para el inicio de sesión raíz, un cambio en el archivo sshd_config puede ayudar:
Su kilometraje puede variar, aunque esto a menudo ayuda, alguna otra configuración aún puede interferir de acuerdo con un comentario encontrado en algunos archivos sshd_config :
Incluso si no puede cambiar fácilmente la configuración del servidor remoto para depurar de esta manera, se puede probar la configuración del lado del cliente hasta cierto punto utilizando los mismos archivos de identidad para ssh a una cuenta no root en el mismo servidor remoto.
fuente
Puedo ver por qué la seguridad puede molestar a las personas. Acabo de tener el
ssh won't use my key
problema nuevamente. Lo resolví iniciando sesión en el servidor remoto y ejecutandoy luego desde mi escritorio, (intentando ssh al servidor)
En el servidor tengo
Authentication refused: bad ownership or modes for directory /
Algunos nuevos administradores de sistemas habían estropeado el permiso y la propiedad, que solucioné con:
(Estoy acostumbrado a necesitar,
chmod 0600 ~/.ssh/* ; chmod 0644 ~/.ssh/*.pub
pero la comprobación / búsqueda de sshd para encontrar los permisos de root es nueva para mí). Ahora voy a buscar un rootkit y luego lo borraré y volveré a instalar de todos modos.fuente
En mi caso, el problema era con el ejecutable de shell incorrecto.
Se cambió el archivo / etc / passwd para ese usuario
fuente
Tuve este problema en CentOS 7. Soy un usuario habitual de Linux basado en Debian, así que era un pez fuera del agua. Noté que en algunos de los servidores funcionaba y en uno solo no. Audit.log no dijo nada útil y secure.log tampoco dio nada. Descubrí que la única diferencia real era algunas diferencias de contexto de seguridad en los archivos y directorios entre los que funcionaban y los que no. Obtenga la seguridad con
sudo ls -laZ <user-home>/.ssh
del directorio (supongo que hay muchos valores predeterminados en sshd_config).
Deberías ver algunos
ssh_home_t
yuser_home_t
atributos. Si no lo hace, use elchcon
comando para agregar los atributos que faltan.Por ejemplo
En mi caso, mi sospecha es que el usuario fue creado de una manera no estándar. Su casa era un directorio en
/var/lib
.Más información en: https://www.linuxquestions.org/questions/linux-security-4/selinux-preventing-ssh-login-with-~-ssh-authorized_keys-4175469538/
fuente