Agregué la clave SSH pública al archivo autorizado_claves . ssh localhost
debería iniciar sesión sin pedir la contraseña.
Lo hice e intenté escribir ssh localhost
, pero aún así me pide que escriba la contraseña. ¿Hay otra configuración por la que tengo que pasar para que funcione?
He seguido las instrucciones para cambiar los permisos:
A continuación se muestra el resultado si lo hago ssh -v localhost
.
debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/john/.ssh/identity type 1
debug1: identity file /home/john/.ssh/id_rsa type -1
debug1: identity file /home/john/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /home/john/.ssh/known_hosts:12
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/john/.ssh/identity
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Luego pide una fase de paso después del registro anterior. ¿Por qué no me inicia sesión sin contraseña?
ssh
public-key
authorized-keys
usuario482594
fuente
fuente
Respuestas:
Debe verificar los permisos del
authorized_keys
archivo y la carpeta / carpetas principales en las que se encuentra.Para más información ver esta página .
También es posible que deba cambiar / verificar los permisos de su directorio de inicio para eliminar el acceso de escritura para el grupo y otros.
fuente
chmod go-wrx foobar
suficiente es suficiente. Hacerlo de forma recursiva podría dañar seriamente algunas aplicaciones si tiene algún grupo u otro acceso a los archivos, especialmente si se trata de un directorio web.chmod go-w $HOME $HOME/.ssh
hará). Por lo tanto, los permisos pueden ser tan 'abiertos' como 755 para ambos directorios, si así lo desea. Los comandos más simples / menos invasivos se encuentran en las preguntas frecuentes: openssh.org/faq.html#3.14chmod 700 ~/.ssh && chmod 644 ~/.ssh/authorized_keys
? 600 no funcionó donde 644 sí ...sudo chown -R {$USER}:{$USER} ~/.ssh/
porque había escrito elauthorized_keys
archivo como root.SELinux también puede hacer que autor_keys no funcionen. Especialmente para root en CentOS 6 y 7. Sin embargo, no es necesario deshabilitarlo. Una vez que haya verificado que sus permisos son correctos, puede arreglar esto de la siguiente manera:
fuente
restorecon
es lo que necesita después de haber copiado los archivos a mano, por ejemplo, a un nuevo disco duro. (Probablemente debería ejecutarlo en todos los archivos en este caso. Podría solucionar otros problemas extraños.)configurar ssh certified_keys parece ser simple, pero esconde algunas trampas que estoy tratando de imaginar
- SERVIDOR -
en / etc / ssh / sshd_config configurado
passwordAuthentication yes
para permitir que el servidor acepte temporalmente la autenticación de contraseña- CLIENTE -
1. generar claves privadas y públicas (lado del cliente)
# ssh-keygen
aquí presionando solo ENTER obtiene los archivos DEFAULT 2 " id_rsa " e " id_rsa.pub " en ~ / .ssh / pero si le da un nombre_para_la_clave, los archivos generados se guardan en su pwd
2. coloque your_key.pub en la máquina de destino
ssh-copy-id user_name@host_name
si no creó la clave predeterminada, este es el primer paso para salir mal ... debe usar
ssh-copy-id -i path/to/key_name.pub user_name@host_name
3. el registro
ssh user_name@host_name
solo funcionará para id_rsa predeterminado, así que aquí hay una segunda trampa para la que necesitassh -i path/to/key_name user@host
(use la opción ssh -v ... para ver qué está pasando)
Si el servidor aún solicita la contraseña , le dio algo. a Introduzca la frase de contraseña: cuando se haya creado teclas (por lo que es normal)
si ssh no está escuchando, el puerto predeterminado 22 debe usar
ssh -p port_nr
- SERVIDOR -----
4. modifique / etc / ssh / sshd_config para tener
(sin comentarios si el caso)
Esto le dice a ssh que acepte autorizado_claves y busque en el directorio de inicio del usuario la picadura del nombre_clave escrita en el archivo .ssh / Authorized_keys
5 permisos establecidos en la máquina de destino
También apague la autenticación de pase
passwordAuthentication no
cerrar la puerta a todos los intentos de ssh root / admin /....@ your_domain
6 garantizar que la propiedad y la propiedad grupal de todos los directorios principales no root sean apropiadas.
===============================================
7. considere el excelente http://www.fail2ban.org
8. TÚNEL ssh extra para acceder a un servidor MySQL (bind = 127.0.0.1)
fuente
ssh-copy-id
! Ese paso solo sería una gran respuesta.También asegúrese de que otros usuarios no puedan escribir su directorio personal
La respuesta es robada desde aquí
fuente
chmod 700 ~/.ssh ; chmod 600 ~/.ssh/authorized_keys ; chmod g-w,o-w ~
funcionó para mí. Gracias.chmod og-w /home/USERNAME
lugar?los desesperados también pueden asegurarse de que no tengan nuevas líneas adicionales en el archivo Author_keys debido a que copian el texto id_rsa.pub de un terminal confuso.
fuente
id_rsa.pub
usar enmore
lugar decat
, lo cual fue fatal debido a los saltos de línea invisibles.usuario es tu nombre de usuario
fuente
mkdir -p /home/$USER/.ssh && chown -R $USER:$USER /home/$USER/.ssh && sudo -u $USER ssh-keygen -t rsa && touch /home/$USER/.ssh/authorized_keys && touch /home/$USER/.ssh/known_hosts && chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/id* && chmod 644 /home/$USER/.ssh/id*.pub && chmod 644 /home/$USER/.ssh/authorized_keys && chmod 644 /home/$USER/.ssh/known_hosts && vim /home/$USER/.ssh/authorized_keys # paste keys here!
Tenga en cuenta que SELinux también puede desencadenar este error, incluso si todos los permisos parecen estar bien. Deshabilitarlo fue suficiente para mí (inserte las renuncias habituales sobre deshabilitarlo).
fuente
/var/log/audit/audit.log
.restorecon -R -v /root/.ssh
Arreglado mi caso específico.Es necesario enumerar una clave pública en .ssh / Authorized_keys , pero no es suficiente para que sshd (servidor) lo acepte. Si su clave privada está protegida con frase de contraseña, deberá darle a ssh (cliente) la frase de contraseña cada vez. O puede usar ssh-agent , o un equivalente de GNOME.
Su rastreo actualizado es consistente con una clave privada protegida con frase de contraseña. Ver ssh-agent, o usar
ssh-keygen -p
.fuente
Comando de escritura:
Después de hacer esto, asegúrese de que su directorio sea así:
fuente
Lo que finalmente hizo el truco para mí fue asegurarme de que el propietario / grupo no fuera root sino usuario:
fuente
Prueba "ssh-add" que funcionó para mí.
fuente
Otro consejo para recordar. Desde v7.0 OpenSSH deshabilita las claves DSS / DSA ssh por defecto debido a su debilidad de herencia. Entonces, si tiene OpenSSH v7.0 +, asegúrese de que su clave no lo sea
ssh-dss
.fuente
En mi caso, necesitaba poner mi
authorized_keys
archivo.openssh
.Esta ubicación se especifica en
/etc/ssh/sshd_config
debajo de la opciónAuthorizedKeysFile %h/.ssh/authorized_keys
.fuente
Asegúrese de que el usuario objetivo tenga establecida una contraseña. Corre
passwd username
para establecer uno. Esto fue necesario para mí incluso si la contraseña de inicio de sesión SSH estaba deshabilitada.fuente
esto resuelve mi problema
fuente
Otro problema que debes tener en cuenta. Si su archivo generado no es predeterminado
id_rsa
yid_rsa.pub
Debe crear un archivo .ssh / config y definir manualmente qué archivo de identificación va a utilizar con la conexión.
El ejemplo está aquí:
fuente
Emití
sudo chmod 700 ~/.ssh
ychmod 600 ~/.ssh/authorized_keys
ychmod go-w $HOME $HOME/.ssh
desde arriba y que fijo mi problema en un cuadro de CentOS7 que había ensuciado los permisos en al intentar obtener samba acciones de trabajo. Graciasfuente
Parece un problema de permiso. Por lo general, sucede si el permiso de algún archivo / directorio no está configurado correctamente. En la mayoría de los casos son
~/.ssh
y~/.ssh/*
. En mi caso lo son/home/xxx
.Puede cambiar el nivel de registro de sshd modificando
/etc/ssh/sshd_config
(buscarLogLevel
, establecerlo enDEBUG
), luego verifique la salida/var/log/auth.log
para ver qué sucedió exactamente.fuente
Mi problema era un AuthorizedKeysFile modificado, cuando aún no se había ejecutado la automatización para rellenar / etc / ssh / certified_keys.
fuente
Solo mire en /var/log/auth.log en el servidor . Establecer verbosidad adicional con -vv en el lado del cliente no ayudará, porque es poco probable que el servidor ofrezca demasiada información a un posible atacante.
fuente
Asegúrese de haber copiado toda la clave pública en
authorized_keys
; Elssh rsa
prefijo es necesario para que la clave funcione.fuente
necesita verificar las propiedades de los archivos. para asignar el uso de propiedad requerido:
fuente
Mire en
/var/log/auth.log
el servidor lossshd
errores de autenticación.Si todo lo demás falla, ejecute el
sshd
servidor en modo de depuración:Luego, conéctese desde el cliente:
En mi caso encontré la sección de error al final:
Con esta información, me di cuenta de que
sshd_config
estaba restringiendo los inicios de sesión a los miembros delssh
grupo. El siguiente comando corrigió este error de permiso:fuente
en esa nota, asegúrese de que sshd config tiene -;
establecer como lo anterior, luego reiniciar sshd (/etc/init.d/sshd restart)
¡cierre sesión e intente iniciar sesión nuevamente!
por defecto creo que es -;
fuente
En mi caso es porque el grupo de usuarios no está configurado en AllowGroups del archivo de configuración / etc / ssh / sshd_config. Después de agregarlo todo funciona bien.
fuente
Tengo el directorio de inicio en una ubicación no estándar y en los
sshd
registros tengo esta línea:incluso si todos los permisos estuvieran bien (ver las otras respuestas).
He encontrado una solución aquí: http://arstechnica.com/civis/viewtopic.php?p=25813191&sid=0876f069ec2aa5fdcd691a2e2e7242c2#p25813191
En mi caso particular:
agregó una nueva línea en
/etc/selinux/targeted/contexts/files/file_contexts.homedirs
:Esta es la línea original para los directorios principales regulares:
/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0
Esta es mi nueva línea:
/data/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0
seguido de una
restorecon -r /data/
y unsshd
reiniciofuente
Tuve este problema y ninguna de las otras respuestas lo resolvió, aunque, por supuesto, las otras respuestas son correctas.
En mi caso, resultó que el
/root
directorio en sí (no por ejemplo/root/.ssh
) tenía los permisos incorrectos. Lo necesitaba:Por supuesto, esos permisos deberían ser algo así (tal vez
chmod 770
) independientemente. Sin embargo, es impedido en concretosshd
de trabajo, a pesar de que/root/.ssh
y/root/.ssh/authorized_keys
ambos tenían permisos y propietarios correctos.fuente
Tuve este problema cuando agregué el grupo del usuario de inicio de sesión a otro usuario. Digamos que hay un usuario ssh-login llamado userA y un usuario no ssh-login userB. userA también tiene el grupo userA. Modifiqué userB para tener el grupo userA también. Esto condujo al comportamiento descrito, de modo que el usuario A no pudo iniciar sesión sin una solicitud. Después de eliminar el grupo usuario A del usuario B, el inicio de sesión sin solicitud funcionó nuevamente.
fuente