2011-09-16 10 views
46

EDITAR: Poner exactamente lo que se hizo¿Cómo enviar ssh al servidor local sin contraseña?

Necesito SSH localhost sin contraseña, la forma habitual de hacerlo (con claves públicas) no funciona.

[email protected]:~$ rm -rf .ssh/* 
[email protected]:~$ ssh-keygen -t rsa > /dev/null 
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
[email protected]:~$ ls .ssh/ 
id_rsa id_rsa.pub 
[email protected]:~$ ssh-copy-id -i localhost 
The authenticity of host 'localhost (::1)' can't be established. 
RSA key fingerprint is f7:87:b5:4e:31:a1:72:11:8e:5f:d2:61:bd:b3:40:1a. 
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added 'localhost' (RSA) to the list of known hosts. 
[email protected]'s password: 
Now try logging into the machine, with "ssh 'localhost'", and check in: 

    .ssh/authorized_keys 

to make sure we haven't added extra keys that you weren't expecting. 

[email protected]:~$ ssh-agent $SHELL 
[email protected]:~$ ssh-add -L 
The agent has no identities. 
[email protected]:~$ ssh-add 
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa) 
[email protected]:~$ ssh-add -L 
ssh-rsa ...MY KEY HERE 

[email protected]:~$ ssh-copy-id -i localhost 
[email protected]'s password: 
Now try logging into the machine, with "ssh 'localhost'", and check in: 

    .ssh/authorized_keys 

to make sure we haven't added extra keys that you weren't expecting. 

[email protected]:~$ ssh localhost echo 'testing' 
[email protected]'s password: 

[email protected]:~$ 

Así como se puede ver en el último comando que todavía está pidiendo la contraseña! ¿Cómo puedo solucionar eso? Ubuntu-10.04, OpenSSH_5.3p1

Edit2:

Agregando un poco de información sobre el sshd

[email protected]:~$ cat /etc/ssh/sshd_config | grep Authentication 
# Authentication: 
RSAAuthentication yes 
PubkeyAuthentication yes 
RhostsRSAAuthentication no 
HostbasedAuthentication no 
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication 
ChallengeResponseAuthentication no 
# PasswordAuthentication yes 

Edit3: Ading resultado de $ ssh localhost -vs

$ssh -vv localhost 
... 
debug1: Authentications that can continue: publickey,password 
debug1: Next authentication method: publickey 
debug1: Trying private key: /home/user/.ssh/identity 
debug1: Offering public key: /home/user/.ssh/id_rsa 
debug2: we sent a publickey packet, wait for reply 
debug1: Authentications that can continue: publickey,password 
debug1: Trying private key: /home/user/.ssh/id_dsa 
debug2: we did not send a packet, disable method 
debug1: Next authentication method: password 
[email protected]'s password: 

Respuesta

99

Yo siguientes 3 pasos para crear la contraseña menos una sesión

1. ssh-keygen -t rsa 
Press enter for each line 
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
3. chmod og-wx ~/.ssh/authorized_keys 
+1

¡Funciona como un encanto! Gracias –

+1

Podría ssh sin contraseña sin usar el paso 3? ¿Cuándo tendré que hacer el paso 3? –

+2

@Rich: eso es solo para protegerse contra lo que [@shipr menciona en su respuesta a continuación] (http://stackoverflow.com/a/10744443/98528). Si su '~/.ssh/authorized_keys' ya existía y tenía los permisos correctos, (3.) no es necesario, pero tampoco daña. – akavel

13

han descubierto el problema.

Ejecutar el servidor con debuging:

$sshd -Dd 

me pareció que no era capaz de leer el auth_key

$chmod 750 $HOME 

arreglaron.

+3

¿Por qué ustedes no usan el modo chmod simbólico? Ya no son 90, ¿verdad? –

+5

Porque el modo simbólico es confuso. No tengo idea de lo que 750 sería fuera de mi cabeza. algo como 'u = rwx, g = rx, o =' Sea lo que sea, ¡no es más fácil que 750! Por cierto, 755 perms funcionan bien también. –

+0

Muy útil. Usé '/ usr/sbin/sshd -ddddD' y obtuve el siguiente mensaje' Autenticación rechazada: mala posesión o modos para directorio/home/... ' – Leonardo

10

Otro posible respuesta: el archivo authorized_keys puede existir y ser legible. Pero si se puede escribir en grupo o en el mundo, seguirá solicitando la contraseña. La respuesta a este problema es

chmod og-wx ~/.ssh/authorized_keys 
+0

Funciona mejor que cualquier cosa que haya leído hasta ahora. – OcuS

2

hacer los pasos siguientes

ssh-keygen -t rsa -C "[email protected]" 
# Creates a new ssh key, using the provided email as a label 
# Generating public/private rsa key pair. 

utilizar el archivo por defecto y la contraseña vacía (Simplemente presione intro en los próximos 2 pasos)

# start the ssh-agent in the background 
eval "$(ssh-agent -s)" 
# Agent pid 59566 
ssh-add 

Copie el contenido de ~/.ssh/id_rsa.pub a ~/.ssh/authorized_keys

Asegurar siguientes son los permisos

ls -l .ssh/ 
total 20 
-rw-r--r--. 1 swati swati 399 May 5 14:53 authorized_keys 
-rw-r--r--. 1 swati swati 761 Jan 12 15:59 config 
-rw-------. 1 swati swati 1671 Jan 12 15:44 id_rsa 
-rw-r--r--. 1 swati swati 399 Jan 12 15:44 id_rsa.pub 
-rw-r--r--. 1 swati swati 410 Jan 12 15:46 known_hosts 

Además, aseguran los permisos para el directorio .ssh son. Esto también es importante

drwx------. 2 swati swati 4096 May 5 14:56 .ssh 
1

dos sencillos pasos:

ssh-keygen -t rsa <Press enter for each line> 
ssh-copy-id localhost 

introduzca la contraseña y ya está.

1

La forma correcta y segura de hacerlo es copiar las claves como se ha dicho aquí.

En otros casos, sshpass puede ser útil.

sshpass -p raspberry ssh [email protected] 

Tenga en cuenta que esto no es seguro en absoluto. A pesar de que no es una buena idea para utilizarlo en entornos seguros, puede ser útil para scripts, pruebas automatizadas ...

esto puede ser combinado con

ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected] 

para evitar preguntas de confirmación que impiden scripting de suceder.

De nuevo, solo use esto en sistemas de desarrollo donde diferentes máquinas comparten una IP y la seguridad no es importante.

https://ownyourbits.com/2017/02/22/easy-passwordless-ssh-with-sshh/

0

como la respuesta aceptada hacer, si encount un problema de

Agent admitted failure to sign using the key. 

que necesita para

ssh-add 
0

me enfrenté al mismo problema incluso después de seguir todas las recomendaciones , pero descubrió que el problema era con la interferencia de gnome-keyring.

Solución:

  1. Ir Búsqueda, busque “Aplicaciones de inicio”
  2. Si ve “agente clave SSH”, desactive la casilla
  3. Reiniciar la máquina y conectarse al servidor local.
+0

Esto no proporciona una respuesta a la pregunta. Una vez que tenga suficiente [reputación] (https://stackoverflow.com/help/whats-reputation) podrá [comentar cualquier publicación] (https://stackoverflow.com/help/privileges/comment); en su lugar, [brinde respuestas que no requieran aclaración del autor de la pregunta] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-instead). - [De la crítica] (/ review/low-quality-posts/17994750) – kometen

Cuestiones relacionadas