529 Stimmen

Das Hinzufügen eines öffentlichen Schlüssels zu ~/.ssh/authorized_keys loggt mich nicht automatisch ein

Ich habe den öffentlichen SSH-Schlüssel zur autorisierte_Schlüssel Datei. ssh localhost sollte mich anmelden, ohne nach dem Passwort zu fragen.

Ich habe das getan und versucht, Folgendes einzugeben ssh localhost aber es fordert mich immer noch auf, das Passwort einzugeben. Gibt es eine weitere Einstellung, die ich vornehmen muss, damit es funktioniert?

Ich habe die Anweisungen zum Ändern der Berechtigungen befolgt:

Nachfolgend ist das Ergebnis, wenn ich ssh -v localhost .

debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/john/.ssh/identity type 1
debug1: identity file /home/john/.ssh/id_rsa type -1
debug1: identity file /home/john/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /home/john/.ssh/known_hosts:12
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/john/.ssh/identity
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>

Dann wird nach dem obigen Protokoll nach einer Passphase gefragt. Warum loggt es mich nicht ohne Passwort ein?

1274voto

Teddy Punkte 18047

Sie müssen die Berechtigungen der Datei authorized_keys Datei und dem Ordner/den übergeordneten Ordnern, in dem/denen sie sich befindet.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Für weitere Informationen siehe diese Seite .

Möglicherweise müssen Sie auch die Berechtigungen Ihres Home-Verzeichnisses ändern/überprüfen, um den Schreibzugriff für die Gruppe und andere zu entfernen.

chmod go-w ~

170voto

Cole Stanfield Punkte 2397

SELinux kann auch dazu führen, dass authorized_keys nicht funktioniert. Insbesondere für Root in CentOS 6 und 7. Es besteht jedoch keine Notwendigkeit, sie zu deaktivieren.

Sobald Sie sich vergewissert haben, dass Ihre Berechtigungen korrekt sind, können Sie dies wie folgt korrigieren:

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
restorecon -R -v /root/.ssh

123voto

bortunac Punkte 4266

Einstellung ssh autorisierte_Schlüssel scheinen einfach zu sein, aber sie verbergen einige Fallen, die ich zu entschlüsseln versuche.

-- SERVER --

Unter /etc/ssh/sshd_config gesetzt passwordAuthentication yes damit der Server vorübergehend die Passwortauthentifizierung akzeptiert

-- KUNDE --

berücksichtigen. Cygwin als Linux-Emulation und installieren und starten Sie OpenSSH

1. Private und öffentliche Schlüssel generieren (Client-Seite) # ssh-keygen

Hier einfach drücken Enter erhalten Sie Standard zwei Dateien, " id_rsa " und " id_rsa.pub ", in ~/.ssh/ aber wenn Sie eine name_für_den_schlüssel werden die erzeugten Dateien in Ihrem aktuelles Arbeitsverzeichnis .

2. Übertragen Sie die Ihr_Schlüssel.pub Datei auf den Zielcomputer zu übertragen, ssh-copy-id user_name@host_name

Wenn Sie keinen Standardschlüssel erstellt haben, ist dies der erste Schritt, der schief gehen kann ... sollten Sie verwenden:

ssh-copy-id -i path/to/key_name.pub user_name@host_name

3. Protokollierung ssh user_name@host_name funktioniert nur für den Standard id_rsa Datei, hier ist also die zweite Falle. Sie müssen tun ssh -i path/to/key_name user@host

(Verwendung ssh -v ... Option, um zu sehen, was passiert).

Wenn der Server fragt immer noch nach einem Passwort dann haben Sie etwas gegeben. An Passphrase eingeben: wenn Sie Schlüssel erstellt haben (das ist also normal).

Wenn ssh nicht auf dem Standard-Port 22 lauscht, müssen Sie ssh -p port_nr .

-- SERVER -----

4. Datei ändern /etc/ssh/sshd_config zu haben

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys

(nicht ausfüllen, wenn dies der Fall ist)

Dies weist ssh an, die Datei autorisierte_Schlüssel und suchen Sie im Home-Verzeichnis des Benutzers nach dem schlüssel_name Stachel in der .ssh/authorized_keys archivo.

5 Berechtigungen auf dem Zielcomputer festlegen

chmod 755 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Schalten Sie auch die Pass-Authentifizierung aus,

passwordAuthentication no

um das Tor für alle ssh-Versuche Root/admin/....@Ihre_Domäne zu schließen.

6. Stellen Sie sicher, dass die Eigentums- und Gruppenrechte für alle Nicht-Root-Home-Verzeichnisse angemessen sind.

chown -R ~ usernamehere
chgrp -R ~/.ssh/ user

\===============================================

7. Betrachten Sie die ausgezeichnete http://www.fail2ban.org

8. Extra SSH Tunnel um auf einen MySQL-Server (bind = 127.0.0.1) zuzugreifen

41voto

Stephan Hoyer Punkte 4494

Vergewissern Sie sich auch, dass Ihr Home-Verzeichnis für andere nicht beschreibbar ist:

chmod g-w,o-w /home/USERNAME

Diese Antwort ist gestohlen von aquí .

16voto

Alexander Taylor Punkte 14669

Die Verzweifelten können auch darauf achten, dass sie keine zusätzlichen Zeilenumbrüche in der autorisierte_Schlüssel Datei aufgrund des Kopierens der Datei id_rsa.pub Text aus einem verwirrten Terminal.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X