it-swarm.com.de

passwortloses ssh funktioniert nicht

Ich habe versucht, ein passwortloses ssh s/w A bis B und B bis A zu erstellen. Generierte den öffentlichen und privaten Schlüssel mit ssh-keygen -trsa auf beiden Computern. Verwendete das Hilfsprogramm ssh-copy-id, um die öffentlichen Schlüssel von A nach B sowie von B nach A zu kopieren.

Das passwortlose SSH funktioniert von A bis B, aber not von B bis A. Ich habe die Berechtigungen des Ordners ~/ssh/überprüft und scheint normal zu sein.

A's .ssh Ordnerberechtigungen:

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

-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 ist eine Ubuntu 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25. März 2009) B ist eine Debian-Maschine (OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19. Oktober 2007)

Aus A:

#ssh B

funktioniert gut.

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

Dies bedeutet im Wesentlichen, dass keine Authentifizierung mit der Datei /root/id_rsa erfolgt. Ich habe den Befehl ssh-add auch auf beiden Rechnern ausgeführt.

Der Authentifizierungsteil der /etc/ssh/sshd_config -Datei lautet

# 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

Mir gehen die Ideen aus. Jede Hilfe wäre dankbar.

36
Cuurious

Stellen Sie einfach sicher, dass Sie das folgende Verfahren befolgt haben:

Auf Maschine A

öffne ein Terminal und gib die Befehle wie folgt ein:

[email protected]:~# id

Nur um sicherzustellen, dass wir root sind.

Wenn der obige Befehl so etwas wie den folgenden ausgibt, sind wir root, ansonsten wechseln Sie mit dem Befehl su zu root

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

1) Erstellen Sie die Schlüssel.

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 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|          ooo+==B|
|         . E=.o+B|
|        . . .+.*o|
|       . . .  ...|
|        S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

Ich habe keine Passphrase verwendet. Wenn Sie einen brauchen, können Sie ihn verwenden.

2) Kopieren Sie den öffentlichen Schlüssel in die Datei .ssh/authorized_keys von Computer B.

[email protected]:~# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
[email protected]'s password: 

Versuchen Sie nun, sich mit ssh '[email protected]' am Computer anzumelden, und checken Sie ein:

~/.ssh/authorized_keys

um sicherzustellen, dass wir keine zusätzlichen Schlüssel hinzugefügt haben, die Sie nicht erwartet haben.

Ersetzen Sie mylap durch den Hostnamen oder die IP-Adresse des Computers, auf dem Sie sich anmelden möchten (z. B. Computer B).

3) Melden Sie sich bei B ohne Passwort an

[email protected]:~# ssh [email protected]
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
[email protected]:~$

Auf Maschine B

4) Erstellen Sie die Schlüssel, um sich wieder bei Computer A anzumelden

[email protected]:~# 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 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|          o   .  |
|         . + + o |
|        S o * E  |
|           = O . |
|            O +  |
|           + o o.|
|            . o+=|
+-----------------+

5) Kopieren Sie den öffentlichen Schlüssel in die Datei .ssh/authorized_keys von Computer A.

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

Versuchen Sie nun, sich mit ssh '[email protected]' am Computer anzumelden, und checken Sie ein:

.ssh/authorized_keys

um sicherzustellen, dass wir keine zusätzlichen Schlüssel hinzugefügt haben, die Sie nicht erwartet haben.

6) Melden Sie sich bei A ohne Passwort an

ssh [email protected]
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

Wenn Sie diese Schritte ausführen können, sind Sie fertig. Jetzt haben Sie zwei Computer mit aktiviertem SSH-Schlüssel (öffentlicher Schlüssel).

24
aneeshep

Nach passwortloses ssh einrichten wurde ich immer noch nach meinem Benutzerpasswort gefragt. Beim Betrachten von /var/log/auth.log auf dem Remotecomputer wurde auf das Problem hingewiesen:

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

So stellen Sie sicher, dass es richtig ist:

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

Das Verbot, dass andere Benutzer über Ihren .ssh -Ordner schreiben, liegt auf der Hand, aber es war schwieriger, die gleichen Anforderungen an Ihren Basisordner zu stellen.

Überprüfen Sie auch /etc/ssh/ssd_config, um sicherzustellen, dass die Optionen RSAAuthentication und PubkeyAuthentication nicht deaktiviert sind. Die Standardeinstellung ist yes, daher sollte dies kein Problem sein.

44
Maxime R.

Wahrscheinlich nur ein höheres Berechtigungsproblem. Sie müssen Schreibberechtigungen von der Gruppe und anderen in Ihrem Ausgangsverzeichnis und im SSH-Verzeichnis entfernen. Um diese Berechtigungen zu korrigieren, führen Sie chmod 755 ~ ~/.ssh oder chmod go-w ~ ~/.ssh aus.

Wenn Sie weiterhin Probleme haben, geben Sie das folgende grep in Ihrem Protokoll ein:

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

(Ersetzen Sie LOCAL_USER_NAME durch Ihren lokalen Benutzernamen ...)

Das sollte Ihnen hoffentlich mehr über Ihr Problem erzählen, vorausgesetzt, die sshd-Authentifizierungsinformationen werden im sicheren Protokoll protokolliert, das standardmäßig sein sollte. Wenn Sie Fehler sehen, die so aussehen:

DATE HOSTNAME sshd [1317]: Authentifizierung abgelehnt: Falscher Besitz oder Modi für Verzeichnis/Pfad/zu/einigen/Verzeichnissen

Es ist das oben beschriebene Problem und Sie müssen das betreffende Verzeichnis finden und die Schreibberechtigungen von der Gruppe und anderen entfernen.

Aus dem Grund, dass Sie die Schreibberechtigungen für Ihr Basisverzeichnis einschränken müssten (obwohl die Berechtigungen für Ihr .ssh-Verzeichnis und nachfolgende Verzeichnisse bereits eingeschränkt sind), können andere Benutzer Ihr .ssh-Verzeichnis umbenennen und ein neues erstellen - obwohl dies der Fall ist wäre unbrauchbar, da dies (aufgrund falscher Berechtigungen) für die meisten Benutzer wahrscheinlich darin besteht, die Berechtigungen zu ändern, anstatt den Inhalt des Verzeichnisses zu überprüfen ...

TLDNR: Wenn Sie Gruppen- und/oder anderen Benutzern Schreibzugriff auf Ihr Home-Verzeichnis gewähren, erzwingt ssh die Kennwortanmeldung.

14
KTBiz

verwenden Sie das Root-Konto auf jedem Computer? Normalerweise verwenden Sie unter Ubuntu ein Benutzerkonto und geben ihm die erforderlichen Sudo-Berechtigungen.

Wenn Sie einen Benutzer ohne Rootberechtigung verwenden, kann Sudo chown $USER -R ~/.ssh Ihr Problem beheben

Andere Dinge zu überprüfen:

überprüfen Sie nochmals, ob B's id_rsa.pub in A's authorized_keys ist.

check A's /etc/ssh/sshd_config enthält

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
2
Smithamax