Ich habe versucht, ein passwortloses ssh s / w A
zu B
und B
zu A
auch einzurichten . Generierte den öffentlichen und privaten Schlüssel ssh-keygen -trsa
auf beiden Computern. Verwendete das ssh-copy-id
Dienstprogramm, um die öffentlichen Schlüssel von A
nach B
sowie B
nach zu kopieren A
.
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 ein Ubuntu 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25. März 2009) B
ist ein Debian-Rechner (OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19. Oktober 2007)
Von A
:
#ssh B
funktioniert gut.
Von 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 mithilfe der Datei erfolgt /root/id_rsa
. Ich habe den ssh-add
Befehl 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.
PermitRootLogin
in/etc/ssh/sshd_config
auf A?yes
Andernfalls wird der Benutzer nicht zur Eingabe eines Kennworts aufgefordert.Antworten:
Stellen Sie einfach sicher, dass Sie das folgende Verfahren befolgt haben:
Auf Maschine A
öffne ein Terminal und gib die Befehle wie folgt ein:
Nur um sicherzustellen, dass wir root sind.
Wenn der obige Befehl so etwas wie unten ausgibt, sind wir root, ansonsten wechseln Sie mit dem
su
Befehl zu root1) Erstellen Sie die Schlüssel.
Ich habe keine Passphrase verwendet. Wenn Sie einen brauchen, können Sie ihn verwenden.
2) Kopieren Sie den öffentlichen Schlüssel in die
.ssh/authorized_keys
Datei von Computer BVersuchen Sie nun, sich mit auf dem Computer anzumelden
ssh 'root@mylap'
, und checken Sie ein: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
Auf Maschine B
4) Erstellen Sie die Schlüssel, um sich wieder bei Computer A anzumelden
5) Kopieren Sie den öffentlichen Schlüssel in die
.ssh/authorized_keys
Datei von Computer AVersuchen Sie nun, sich mit auf dem Computer anzumelden
ssh 'root@aneesh-pc'
, und checken Sie ein: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
Wenn Sie diese Schritte ausführen können, sind Sie fertig. Jetzt haben Sie zwei Computer mit aktiviertem SSH-Schlüssel (öffentlicher Schlüssel).
quelle
/root
(770)drwxrwx--- 70 root root 4096 2011-07-27 00:37 ..
zu offen hatte. Die Berechtigungen wurden in geändertdrwxr-xr-x
und jetzt funktioniert es. Konnte mir nicht vorstellen, dass die Berechtigung des übergeordneten Verzeichnisses diessh
.770
sich auch eingestellt, auf a geändert750
und alles ist in Ordnung mit der Welt :) Ich scheine immer zu vergessen, dass Linux-Prems umgekehrt so funktionieren können.Nachdem ich passwortloses ssh eingerichtet hatte , wurde ich immer noch nach meinem Benutzerpasswort gefragt. Ein Blick
/var/log/auth.log
auf die Remote-Maschine wies auf das Problem hin:So stellen Sie sicher, dass es richtig ist:
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.Stellen Sie außerdem
/etc/ssh/ssd_config
sicher, dassRSAAuthentication
undPubkeyAuthentication
Optionen nicht deaktiviert sind. Standardmäßigyes
sollte das also kein Problem sein.quelle
~/.ssh
in einen anderen Ordner umbenennen und dann einen neuen mit meinem eigenen Schlüssel erstellen könnte.Wahrscheinlich nur ein höheres Berechtigungsproblem. Sie müssen Schreibberechtigungen von der Gruppe und anderen in Ihrem Ausgangsverzeichnis und im SSH-Verzeichnis entfernen. Führen Sie
chmod 755 ~ ~/.ssh
oder aus, um diese Berechtigungen zu korrigierenchmod go-w ~ ~/.ssh
.Wenn Sie weiterhin Probleme haben, geben Sie das folgende grep in Ihrem Protokoll ein:
(durch
LOCAL_USER_NAME
Ihren lokalen Benutzernamen ersetzen ...)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:
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.
quelle
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,
sudo chown $USER -R ~/.ssh
kann das Problem möglicherweise behoben werdenAndere Dinge zu überprüfen:
Überprüfen Sie, ob B
id_rsa.pub
in A istauthorized_keys
.check A's
/etc/ssh/sshd_config
enthältquelle
/etc/ssh/sshd_config
Datei zu integrierenin / etc / ssh / sshd_config bei der Zieländerung
zu
dann töte -HUP deine sshd PID:
quelle
root
SSH-Anmeldung zum Laufen zu bringen. Das hat überhaupt nichts mit dieser Frage zu tun. Wenn dasroot
Konto aktiviert ist (dies ist in Ubuntu nicht die Standardeinstellung), kann das Aktivieren vonroot
SSH-Anmeldungen sehr gefährlich sein.