ssh senza password non funziona


35

Ho cercato di impostare una password meno ssh b / w Aper Be Bper Apure. Ha generato la chiave pubblica e privata utilizzando ssh-keygen -trsasu entrambe le macchine. Utilizzato l' ssh-copy-idutilità per copiare le chiavi pubbliche da Aa Bcome Ba A.

Lo ssh senza password funziona da Aa Bma notda Ba A. Ho controllato i permessi della cartella ~ / ssh / e sembra essere normale.

A's .ssh permessi cartella:

-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 permessi cartella:

-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 .

Aè un ubuntu 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25 mar 2009) Bè un debian machine (OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19 ott 2007)

Da A:

#ssh B

funziona bene.

Da 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
root@192.168.122.1's password: 

Ciò significa essenzialmente che non sta eseguendo l'autenticazione utilizzando il file /root/id_rsa. Ho eseguito il ssh-addcomando anche su entrambe le macchine.

La parte di autenticazione del /etc/ssh/sshd_configfile è

# 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

Sto finendo le idee. Qualsiasi aiuto sarebbe apprezzato.


Qual è l'impostazione di PermitRootLoginin /etc/ssh/sshd_configsu A?
Taneli,

@taneli:, yesaltrimenti all'utente non verrà richiesta una password.
Lekensteyn,

Nel mio caso ho dovuto decommentare "IgnoreUserKnownHosts yes" nel file "/ etc / ssh / sshd_config" su ubuntu 12.04
Martin Magakian,

Risposte:


24

Assicurati solo di aver seguito la seguente procedura:

Sulla macchina A

aprire un terminale e immettere i comandi come segue:

root@aneesh-pc:~# id

Solo per essere sicuri che siamo root.

Se il comando sopra emette qualcosa di simile sotto, siamo root, altrimenti passa a root usando il sucomando

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

1) Creare le chiavi.

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        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

Non ho usato alcuna passphrase. Se ne hai bisogno, puoi usarlo.

2) Copia la chiave pubblica nel .ssh/authorized_keysfile della macchina B.

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

Ora prova ad accedere alla macchina, con ssh 'root@mylap'e fai il check-in:

~/.ssh/authorized_keys

per essere sicuri che non abbiamo aggiunto chiavi extra che non ti aspettavi.

Sostituisci mylap con il nome host o l'ip della macchina a cui vuoi accedere (es. Macchina B)

3) Accedi a B senza password

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

Sulla macchina B

4) Creare le chiavi per accedere nuovamente alla macchina 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) Copia la chiave pubblica nel .ssh/authorized_keysfile della macchina 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: 

Ora prova ad accedere alla macchina, con ssh 'root@aneesh-pc'e fai il check-in:

.ssh/authorized_keys

per essere sicuri che non abbiamo aggiunto chiavi extra che non ti aspettavi.

6) Accedi ad A senza password

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

Se sei in grado di completare questi passaggi, hai finito. Ora hai due macchine con login abilitato per ssh-key (public-key).


fatto tutti i 6 passaggi come specificato, verificato tutte le cose relative fino al passaggio 5, ma in qualche modo il passaggio 6 non funziona
Cuurious

Puoi fornire l'output di questo comando: 'ssh -v root @ aneesh-pc'. sostituire il nome utente e il nome host con il tuo.
aneeshep

15
scoperto il colpevole i permessi del /root(770) drwxrwx--- 70 root root 4096 2011-07-27 00:37 .. erano troppo aperti. Modificate le autorizzazioni drwxr-xr-xe ora funziona. Non riuscivo a immaginare il fatto che l'autorizzazione della directory principale influisca su ssh.
Cuoroso

1
@Cuurious Buona cattura, anche la mia directory home era 770impostata, cambiata in 750e tutto va bene per il mondo :) Mi sembra sempre di dimenticare che i prem di Linux possono funzionare al contrario in questo modo.
complistico

1
Errore al passaggio 3. ssh-copy-id viene eseguito dopo aver immesso una password, tuttavia non riesco ancora ad accedere senza che mi venga richiesta una password, il mio file authorized_keys contiene il testo del mio .pub e sto offrendo la chiave all'accesso . Inutile. L'autorizzazione su tutte le directory è corretta.
Matt Clark,

44

Dopo aver impostato ssh senza password , mi è stata ancora richiesta la password dell'utente. Osservando /var/log/auth.logsul computer remoto è emerso il problema:

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

Quindi, assicurati di averlo giusto:

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

Anche se vietare ad altri utenti di scrivere sulla tua .sshcartella è ovvio, avere lo stesso requisito per la tua cartella home era più complicato.

Inoltre, verifica /etc/ssh/ssd_configche le opzioni RSAAuthenticatione PubkeyAuthenticationnon siano disabilitate. L'impostazione predefinita è yesche non dovrebbe essere un problema.


assicurati inoltre che le cartelle sopra elencate siano di proprietà dell'utente corretto
GoalBased

Sono entrato in questa situazione svincolando un archivio driver realtek creato in modo non corretto. Ha cambiato il proprietario nella directory in cui non lo stavo leggendo.
Paul McMillan,

2
La tua cartella home non può essere scrivibile perché se lo fosse, allora potrei semplicemente rinominarla ~/.sshin qualcos'altro, e quindi crearne una nuova con la mia chiave lì dentro.
Kevin Panko,

2
eccezionale! non avevo pensato di cercare nei registri sul computer host. Grazie!
user3099609

14

Probabilmente solo un problema di autorizzazioni di livello superiore. Devi rimuovere i permessi di scrittura dal gruppo e da altri nella tua home directory e nella directory .ssh. Per correggere queste autorizzazioni, eseguire chmod 755 ~ ~/.ssho chmod go-w ~ ~/.ssh.

Se i problemi persistono, emettere il seguente grep nel registro:

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

(sostituisci LOCAL_USER_NAMEcon il tuo nome utente locale ...)

Si spera che ciò ti dica di più sul tuo problema, supponendo che le informazioni di autenticazione sshd vengano registrate nel registro sicuro, che dovrebbe essere predefinito. Se vedi errori simili a questi:

DATE HOSTNAME sshd [1317]: Autenticazione rifiutata: cattiva proprietà o modalità per directory / percorso / verso / alcuni / directory

È il problema sopra descritto ed è necessario trovare la directory in questione e rimuovere le autorizzazioni di scrittura dal gruppo e da altri.

Per quanto riguarda il motivo per cui dovresti limitare le autorizzazioni di scrittura alla tua home directory (anche se le autorizzazioni sono già limitate sulla tua directory .ssh e successive) consentirà ad altri utenti di rinominare la tua directory .ssh e crearne una nuova - anche se sarebbe inutilizzabile come è (a causa di autorizzazioni errate) la correzione per la maggior parte degli utenti sarebbe probabilmente quella di modificare le autorizzazioni anziché controllare il contenuto della directory ...

TLDNR : Consentire l'accesso in scrittura per gruppo e / o altro alla propria directory home renderà ssh force login password.


2

stai usando l'account di root su ogni macchina? Di solito su Ubuntu useresti un account utente e gli darei i privilegi di sudo come richiesto.

Se si utilizza un utente non root, è sudo chown $USER -R ~/.sshpossibile risolvere il problema

Altre cose da controllare:

doppio controllo che B è id_rsa.pubsi trova in A di authorized_keys.

controlla che A /etc/ssh/sshd_configcontenga

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes

Sì, ho abilitato l'account root nella macchina Ubuntu, quindi in esecuzione come utente root in entrambi i sistemi
Cuurious

Sì, ho pensato, ho aggiunto alcuni altri suggerimenti che potresti aver trascurato. Quell'output è davvero inutile anche se non lo è, niente sul perché la rsa non è stata accettata.
Smithamax,

1
sei vero il motivo per cui la chiave rsa non è stata accettata è l'elemento essenziale qui immagino :). sshd_config contiene gli elementi sopra indicati, ho modificato la domanda per incorporare il contenuto del /etc/ssh/sshd_configfile
Cuurious

-3

in / etc / ssh / sshd_config sulla modifica della destinazione

PermitRootLogin no

a

PermitRootLogin Sì

quindi uccidi -HUP il tuo PID sshd:

root @ dzone2 # ps -ef | grep ssh root 28075 27576 0 nov 17? 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

1
Questo non aiuta. Il problema è che l'accesso SSH senza password (autenticazione con una coppia di chiavi RSA) non funziona. Le istruzioni fornite sono per far rootfunzionare il login SSH. Questo è completamente estraneo a ciò di cui tratta questa domanda. Inoltre, se l' rootaccount è abilitato (non è di default in Ubuntu), abilitare gli rootaccessi SSH può essere piuttosto pericoloso.
Eliah Kagan,
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.