Come SSH per localhost senza password?


17

EDIT: mettendo esattamente quello che è stato fatto.

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

user@PC:~$ rm -rf .ssh/*
user@PC:~$ 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: 
user@PC:~$ ls .ssh/
id_rsa  id_rsa.pub
user@PC:~$ 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.
user@localhost'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.

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

user@PC:~$ ssh-copy-id -i localhost 
user@localhost'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.

user@PC:~$ ssh localhost echo 'testing'
user@localhost's password: 

user@PC:~$ 

Quindi, come puoi vedere nell'ultimo comando, sta ancora chiedendo la password !!! Come posso ripararlo ?? Ubuntu-10.04, OpenSSH_5.3p1

EDIT2:

Aggiunta di alcune informazioni su sshd

user@PC:~$ 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
#KerberosAuthentication no
#GSSAPIAuthentication no
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

EDIT3: risultato dell'annuncio 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
user@localhost's password: 

edit4:

Basta controllare se i file sono uguali e md5sum è d'accordo


Hai RSAAuthentication yese PubkeyAuthentication yesnel tuo / etc / ssh / sshd_config? Cosa mostra ssh -vv localhost? Ho appena provato questo su una scatola 10.04 e non ho avuto problemi ..
Doon,

Hy Doon, in effetti .. Devo entrambi sì. Ho aggiunto l'output di ssh -vv alla domanda.
Canesin,

Perché hai bisogno di ssh per localhost se hai già accesso?
vtest

I software di elaborazione parallela utilizzano ssh / rsh locale
Canesin il

Non pubblicare la risposta nella domanda o inserire "RISOLTO" nel titolo. Hai fatto la cosa giusta fornendo una risposta. Dopo aver accettato la risposta, il sistema mostrerà che il problema è stato risolto.
ChrisF,

Risposte:


10

Prima di tutto, dovresti capire cosa stai facendo:

user@PC:~$ cat .ssh/id_rsa.pub | ssh localhost 'cat >> .ssh/authorized_keys'

Stai copiando la chiave pubblica .ssh/id_rsa.pubtramite ssh, sullo stesso host (che è localhost, lo stesso host). Se lo sostituisci localhostcon qualche altro host, ciò avrebbe più senso (ma se lo stai provando per imparare a farlo, va bene).

Una volta che hai una copia della tua chiave pubblica sull'host remoto (o la stessa in cui ti trovi), devi assicurarti di usarla per l'autenticazione, nel tuo host reale, chiamando ssh-agent/ ssh-add:

$ eval `ssh-agent`
$ ssh-add

Quindi, se hai fornito una passphrase, ti verrà richiesto di inserirlo dopo ssh-add. Se hai generato una chiave privata senza passphrase, allora è tutto.


Sì, capisco i comandi, ho appena messo in quel modo per chiarire che ho fatto le solite cose con i tasti. Ho fatto ssh-add ... non chiede la passphrase (come non ne ho usato nessuno nella creazione) .. ma ancora una volta, facendo $ ssh localhost ls, chiede la password
Canesin

Quindi, se hai eseguito ssh-add, modifica la tua domanda e metti tutto quello che hai fatto. Più informazioni fornisci, migliore e più rapida sarà la risposta.
Torian,


Grazie un milione di volte! A proposito, perché " eval"?
IProblem Factory

3

Ho scoperto il problema.

Esecuzione del server con debug:

$sshd -Dd

Ho scoperto che non è stato in grado di leggere il auth_key

$chmod 750 $HOME

Aggiustato.


Quali erano i flag di file precedenti?
bbaja42,

2

Procedi come segue

ssh-keygen -t rsa -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.

Utilizza il file predefinito e la passphrase vuota (premi semplicemente invio nei 2 passaggi successivi)

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

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

Assicurarsi che le autorizzazioni siano le seguenti

 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 che le autorizzazioni per la directory .ssh siano. Anche questo è importante

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

1
Assicurati 750 permessi su $ HOME
swatisinghi il

Sul mio computer (Fedora 28), l'impostazione del permesso su authorized_keys0600 risolve il problema, mentre il permesso della .sshdirectory non ha alcun effetto sull'acquisizione di localhost
Chang Qian,

1

Semplifica la configurazione del server

Penso che potresti dover disabilitare l'autenticazione basata su password. Questo è un sshd_config che uso

Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers peter paul mary
LogLevel VERBOSE

Prova prima qualcosa di minimo, quindi aggiungilo quando hai bisogno di funzionalità extra.


Aggiornare:

Controlla i log del server

Dal tuo EDIT3 vedo che l'autenticazione con chiave pubblica non riesce prima che il client tenti l'autenticazione basata su password. il syslog del tuo server potrebbe contenere alcuni messaggi di sshd che hanno fatto luce su questo.

Ricarica le configurazioni modificate

Ricorda di segnalare sshddi ricaricare eventuali modifiche alla configurazione. Per esempiokill -HUP $(cat /etc/sshd.pid)


Penso che disabilitare l'autenticazione della password quando non può nemmeno entrare senza la password sarebbe l'ultima cosa che vuole fare (bloccandosi completamente)
Amalgovinus,

@Amalgovinus: la domanda è stata ampiamente modificata da quando ho pubblicato la mia risposta iniziale. Suppongo di poter cancellare questa risposta.
RedGrittyBrick,

0

Per quanto riguarda il post sopra, pur affrontando lo stesso problema, ho appena cambiato la linea

Password autenticazione n

nel file / etc / ssh / sshd_config e ha funzionato.

Inoltre, forse è meglio usarlo

servizio riavvio sshd

per ricaricare le modifiche di configurazione di sshd.


0

Un'altra soluzione per la funzionalità SELinux di Red Hat Enterprise Linux 6.5 che impedisce a sshd di leggere $ HOME / .ssh è quella di utilizzare Restorecon, consultare il mio risponditore qui /superuser//a/764020/213743 .


0

Per me è stato semplice come

cat id_rsa.pub >> authorized_keys

0

Ho avuto lo stesso problema, ho seguito 3 passaggi per creare la password meno login e funziona benissimo

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.