2011-09-16 20 views
46

EDIT: Mettere esattamente cosa è stato fattoCome ssh su localhost senza password?

Ho bisogno di SSH localhost senza password, il solito modo di farlo (con le chiavi pubbliche) non funziona.

[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]:~$ 

Quindi, come potete vedere nella ultimo comando è ancora chiedendo la password! Come posso risolvere il problema? Ubuntu 10.04, OpenSSH_5.3p1

EDIT2:

Aggiunta di alcune informazioni circa lo 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 derivano da $ ssh -vv localhost

$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: 

risposta

99

ho seguendo 3 passi per creare la password meno il login

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

Funziona come un fascino! Grazie –

+1

Posso ssh senza password senza utilizzare il passaggio 3? Quando dovrei fare il passaggio 3? –

+2

@Rich: è solo per proteggersi da ciò che [@shipr cita nella sua risposta di seguito] (http://stackoverflow.com/a/10744443/98528). Se il tuo '~/.ssh/authorized_keys' era già esistente e aveva le autorizzazioni corrette, (3.) non è necessario, ma non danneggia. – akavel

13

hanno scoperto il problema.

esecuzione il server con debuging:

$sshd -Dd 

ho scoperto che non era in grado di leggere l'auth_key

$chmod 750 $HOME 

riparato.

+3

Perché non usi la modalità chmod simbolica? Non sono più gli anni 90, vero? –

+5

Perché la modalità simbolica è confusa. Non ho idea di cosa 750 sarebbe fuori di testa. qualcosa come 'u = rwx, g = rx, o =' Qualunque cosa sia, non è più facile di 750! A proposito, 755 permanenti funzionano bene pure. –

+0

Molto utile. Ho usato '/ usr/sbin/sshd -ddddD' e ho ricevuto il seguente messaggio' Autenticazione rifiutata: proprietà errata o modalità per directory/home/... ' – Leonardo

10

Altro possibile risposta: il file authorized_keys può esistere ed essere leggibile. Ma se è group-or writ-writable, richiederà comunque la password. La risposta a questo problema è

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

Funziona meglio di qualsiasi cosa abbia letto fino ad ora. – OcuS

2

fare le seguenti operazioni

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. 

utilizzare il file di default e la passphrase vuota (Basta premere Invio nei prossimi 2 passaggi)

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

Copiare il contenuto di ~/.ssh/id_rsa.pub in ~/.ssh/authorized_keys

Garantire seguito sono riportati i permessi

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 

Inoltre, assicurarsi le autorizzazioni per directory .ssh sono. Questo è importante anche

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

due semplici passaggi:

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

inserire la password e il gioco è fatto.

1

Il modo corretto e sicuro di farlo è copiare i tasti come è stato detto qui.

In altri casi, sshpass può essere utile.

sshpass -p raspberry ssh [email protected] 

Ricordare che questo non è affatto sicuro. Anche se non è una buona idea di utilizzarlo in ambienti sicuri, può essere utile per lo scripting, test automatizzati ...

questo può essere combinato con

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

per evitare le domande di conferma che impediscono lo scripting dall'accaduto.

Anche in questo caso, utilizzare questo solo nei sistemi di sviluppo in cui diverse macchine condividono un IP e la sicurezza non è importante.

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

0

come la risposta accettata do, se si verificasse un problema di

Agent admitted failure to sign using the key. 

è necessario

ssh-add 
0

Ho affrontato lo stesso problema anche dopo aver seguito tutte le raccomandazioni , ma ho scoperto che il problema era con l'interferenza di gnome-keyring.

Soluzione:

  1. Inizia la ricerca, cercare “Applicazioni di avvio”
  2. Se vedi “SSH Agente Chiave”, deselezionare la casella
  3. Riavviare il computer e connettersi a localhost.
+0

Questo non fornisce una risposta alla domanda. Una volta che hai [reputazione] sufficiente (https://stackoverflow.com/help/whats-reputation) sarai in grado di [commentare qualsiasi post] (https://stackoverflow.com/help/privileges/comment); invece [fornisci risposte che non richiedono chiarimenti da parte del richiedente] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-, invece). - [Dalla recensione] (/ recensione/post di bassa qualità/17994750) – kometen