ssh sin contraseña no funciona

35

He tratado de configurar una contraseña-menos ssh b / w Aa By Ba Atambién. Se generó la clave pública y privada utilizando ssh-keygen -trsaambas máquinas. Utilizó la ssh-copy-idutilidad para copiar las claves públicas de Aa B, así como Ba A.

El ssh sin contraseña funciona desde Ahasta Bpero notdesde Bhasta A. He comprobado los permisos de la carpeta ~ / ssh / y parece ser normal.

A's .ssh permisos de carpeta:

-rw-------  1 root root 13530 2011-07-26 23:00 known_hosts
-rw-------  1 root root   403 2011-07-27 00:35 id_rsa.pub
-rw-------  1 root root  1675 2011-07-27 00:35 id_rsa
-rw-------  1 root root   799 2011-07-27 00:37 authorized_keys
drwxrwx--- 70 root root  4096 2011-07-27 00:37 ..
drwx------  2 root root  4096 2011-07-27 00:38 .

B's .ssh permisos de carpeta:

-rw------- 1 root root  884 2011-07-07 13:15 known_hosts
-rw-r--r-- 1 root root  396 2011-07-27 00:15 id_rsa.pub
-rw------- 1 root root 1675 2011-07-27 00:15 id_rsa
-rw------- 1 root root 2545 2011-07-27 00:36 authorized_keys
drwxr-xr-x 8 root root 4096 2011-07-06 19:44 ..
drwx------ 2 root root 4096 2011-07-27 00:15 .

Aes un ubuntu 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25 mar 2009) Bes una máquina debian (OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19 oct 2007)

De A:

#ssh B

funciona bien.

De B:

#ssh -vvv A 
...
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/identity ((nil))
debug2: key: /root/.ssh/id_rsa (0x7f1581f23a50)
debug2: key: /root/.ssh/id_dsa ((nil))
debug3: Wrote 64 bytes for a total of 1127
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Offering public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1495
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
[email protected]'s password: 

Lo que esencialmente significa que no se está autenticando con el archivo /root/id_rsa. Ejecuté el ssh-addcomando en ambas máquinas también.

La parte de autenticación del /etc/ssh/sshd_configarchivo es

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files

Me estoy quedando sin ideas. Cualquier ayuda sería apreciada.

Cuurious
fuente
¿Cuál es la configuración de PermitRootLoginen /etc/ssh/sshd_configA?
taneli
@taneli: de lo yescontrario, el usuario no recibirá una contraseña.
Lekensteyn
En mi caso, tuve que descomentar "IgnoreUserKnownHosts yes" en el archivo "/ etc / ssh / sshd_config" en ubuntu 12.04
Martin Magakian

Respuestas:

24

Solo asegúrese de haber seguido el siguiente procedimiento:

En la máquina A

abra una terminal e ingrese los comandos de la siguiente manera:

root@aneesh-pc:~# id

Solo para asegurarnos de que somos root.

Si el comando anterior muestra algo como lo que se muestra a continuación, somos root, de lo contrario, cambie a root usando el sucomando

uid=0(root) gid=0(root) groups=0(root)

1) Crea las claves.

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:7d:30:7d:67:db:58:51:42:75:78:9c:06:e1:0c:8d root@aneesh-pc
The key's randomart image is:
+--[ RSA 2048]----+
|          ooo+==B|
|         . E=.o+B|
|        . . .+.*o|
|       . . .  ...|
|        S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

No he usado ninguna frase de contraseña. Si necesita uno, puede usarlo.

2) Copie la clave pública en el .ssh/authorized_keysarchivo de la máquina B

root@aneesh-pc:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@mylap
root@mylap's password: 

Ahora intente iniciar sesión en la máquina, con ssh 'root@mylap', y regístrese:

~/.ssh/authorized_keys

para asegurarnos de que no hayamos agregado claves adicionales que no esperaba.

Reemplace mylap con el nombre de host o la ip de la máquina en la que desea iniciar sesión (es decir, la máquina B)

3) Inicie sesión en B sin contraseña

root@aneesh-pc:~# ssh root@mylap
Warning: Permanently added 'mylap,192.168.1.200' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Jul 27 15:23:58 2011 from streaming-desktop.local
aneesh@mylap:~$

En la máquina B

4) Cree las claves para volver a iniciar sesión en la Máquina A

root@mylap:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:9f:e7:81:ed:02:f9:fd:ad:ef:08:c6:4e:19:76:b1 root@streaming-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|          o   .  |
|         . + + o |
|        S o * E  |
|           = O . |
|            O +  |
|           + o o.|
|            . o+=|
+-----------------+

5) Copie la clave pública en el .ssh/authorized_keysarchivo de la máquina A

root@mylap:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
root@aneesh-pc's password: 

Ahora intente iniciar sesión en la máquina, con ssh 'root@aneesh-pc', y regístrese:

.ssh/authorized_keys

para asegurarnos de que no hayamos agregado claves adicionales que no esperaba.

6) Inicie sesión en A sin contraseña

ssh root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/


Last login: Tue Jul 26 18:52:55 2011 from 192.168.1.116

Si puede completar estos pasos, ya ha terminado. Ahora tiene dos máquinas con inicio de sesión habilitado ssh-key (public-key).

aneeshep
fuente
hizo todos los 6 pasos como se especificaron, verificó todas las cosas relacionadas hasta el paso 5, pero de alguna manera el paso 6 no funciona
Cuurious
¿Puede proporcionar el resultado de este comando: 'ssh -v root @ aneesh-pc'? reemplace el nombre de usuario y el nombre de host con el suyo.
aneeshep
15
descubrí que el culpable de los permisos del /root(770) drwxrwx--- 70 root root 4096 2011-07-27 00:37 .. era demasiado abierto. Cambió los permisos drwxr-xr-xy ahora está funcionando. No podía imaginar el hecho de que el permiso del directorio principal afectara el ssh.
Cuurious
1
@Cuurious Good catch, mi directorio de inicio 770también se configuró, cambió a ay 750todo está bien con el mundo :) Siempre me parece olvidar que las prems de Linux pueden funcionar al revés de esa manera.
cómplice el
1
Error en el paso 3. ssh-copy-id se ejecuta después de ingresar una contraseña, sin embargo, aún no puedo iniciar sesión sin que se me solicite una contraseña, mi archivo autorizado_keys contiene el texto de mi .pub, y estoy ofreciendo la clave al iniciar sesión . Sin resultado. El permiso en todos los directorios es correcto.
Matt Clark
44

Después de configurar ssh sin contraseña , todavía me pidieron mi contraseña de usuario. Al /var/log/auth.logobservar la máquina remota, se señaló el problema:

sshd[4215]: Authentication refused: bad ownership or modes for directory /home/<user>

Por lo tanto, asegúrese de tenerlo bien:

chmod o-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Aunque prohibir a otros usuarios que escriban sobre su .sshcarpeta es obvio, tener el mismo requisito para su carpeta de inicio fue más complicado.

También, comprobación /etc/ssh/ssd_configpara asegurarse de que RSAAuthenticationy PubkeyAuthenticationopciones no son discapacitados. El valor predeterminado es yesque no debería ser un problema.

Maxime R.
fuente
también asegúrese de que las carpetas enumeradas anteriormente sean propiedad del usuario correcto
GoalBased
Me metí en esta situación desarmando un archivo de controlador Realtek mal creado. Cambió el propietario en el directorio en el que lo estaba desmarcando.
Paul McMillan
2
Su carpeta de inicio no se puede escribir porque si lo fuera, entonces podría cambiarle el nombre ~/.ssha otra cosa y luego crear una nueva con mi propia clave allí.
Kevin Panko
2
¡increíble! No había pensado en buscar en los registros de la máquina host. ¡Gracias!
user3099609
14

Probablemente solo un problema de permisos de nivel superior. Es necesario para eliminar los permisos de escritura de grupo y otra a su directorio y el directorio .ssh. Para corregir estos permisos, ejecute chmod 755 ~ ~/.ssho chmod go-w ~ ~/.ssh.

Si todavía tiene problemas, emita el siguiente grep en su registro:

sudo egrep -i 'ssh.*LOCAL_USER_NAME' /var/log/secure

(reemplace LOCAL_USER_NAMEcon su nombre de usuario local ...)

Es de esperar que le diga más sobre su problema, suponiendo que la información de autenticación sshd se registre en el registro seguro, que debería ser por defecto. Si ve errores que se ven así:

DATE HOSTNAME sshd [1317]: Autenticación rechazada: propiedad o modos incorrectos para el directorio / ruta / a / algún / directorio

Es el problema descrito anteriormente y necesita encontrar el directorio en cuestión y eliminar los permisos de escritura del grupo y otros.

En cuanto a la razón por la que necesitaría restringir los permisos de escritura en su directorio de inicio (a pesar de que los permisos ya están restringidos en su .ssh y directorios posteriores), permitirá a otros usuarios cambiar el nombre de su directorio .ssh y crear uno nuevo, aunque eso sería inutilizable como está (debido a permisos incorrectos), la solución para la mayoría de los usuarios probablemente sería cambiar los permisos en lugar de verificar el contenido del directorio ...

TLDNR : Permitir acceso de escritura para el grupo y / u otro a su directorio de inicio hará que ssh fuerce el inicio de sesión con contraseña.

KTBiz
fuente
2

¿Está utilizando la cuenta raíz en cada máquina? Por lo general, en Ubuntu usaría una cuenta de usuario y le daría privilegios de sudo según sea necesario.

Si está utilizando un usuario no root, sudo chown $USER -R ~/.sshpuede solucionar su problema

Otras cosas para verificar:

verifica que B's id_rsa.pubesté en A's authorized_keys.

comprobar A /etc/ssh/sshd_configcontiene

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
Smithamax
fuente
Sí, he habilitado la cuenta raíz en la máquina Ubuntu, por lo tanto, se ejecuta como usuario root en ambos sistemas
Cuurious
Sí, pensé, agregué algunas otras sugerencias que puede haber pasado por alto. Sin embargo, ese resultado es realmente inútil, no se trata de por qué no se aceptó rsa.
Smithamax
1
usted es cierto, la razón por la cual la clave rsa no fue aceptada es el elemento esencial aquí, supongo :). sshd_config contiene los elementos mencionados anteriormente, he editado la pregunta para incorporar el contenido del contenido del /etc/ssh/sshd_configarchivo
Cuurious
-3

en / etc / ssh / sshd_config en el cambio de destino

PermitRootIniciar sesión no

a

PermitRootLogin yes

luego mata -HUP tu PID sshd:

root @ dzone2 # ps -ef | grep ssh root 28075 27576 0 17 de noviembre? 6:11 / usr / lib / ssh / sshd

root 17708 20618   0 10:09:30 pts/37      0:00 grep ssh root@dzone2 # kill -HUP 28075 root@dzone2 # ps -ef|grep ssh
root 17861 20618   0 10:09:44 pts/37      0:00 grep ssh
root 17852 27576   0 10:09:42 ?           0:00 /usr/lib/ssh/sshd
Duncan
fuente
1
Esto no ayudará. El problema es que el inicio de sesión SSH sin contraseña (autenticación con un par de claves RSA) no funciona. Las instrucciones que ha proporcionado son para que el rootinicio de sesión SSH funcione. Eso no tiene nada que ver con lo que trata esta pregunta. Además, si la rootcuenta está habilitada (no está por defecto en Ubuntu), habilitar los rootinicios de sesión SSH puede ser bastante peligroso.
Eliah Kagan