ssh-copy-id funktioniert nicht

19

Ich versuche unter CentOS 5.4 ein passwortloses SSH-Login einzurichten:

  1. Ich habe auf dem Client einen öffentlichen RSA-Schlüssel generiert.
  2. ssh-copy-id vom client zum server.
  3. Verified ~ / .ssh / authorized_keys enthält den Client-Schlüssel.

Der Client hat weiterhin nach dem Kennwort gefragt. Was habe ich verpasst?

Vielen Dank.

BEARBEITEN: überprüft ssh_config und Berechtigungen wie empfohlen. Dies ist die Debug-Info vom Client:

debug2: key: /home/saguna/.ssh/identity ((nil))
debug2: key: /home/saguna/.ssh/id_rsa (0x2b31921be9a0)
debug2: key: /home/saguna/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 192.168.1.75.
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/saguna/.ssh/identity
debug3: no such identity: /home/saguna/.ssh/identity
debug1: Offering public key: /home/saguna/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/saguna/.ssh/id_dsa
debug3: no such identity: /home/saguna/.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: 
Jackhab
quelle
Ich bekomme das auch :(
Matt Joiner

Antworten:

19

9/10 Mal, weil ~ / .ssh / authorized_keys nicht im richtigen Modus ist.

chmod 600 ~/.ssh/authorized_keys
JustinShoffstall
quelle
2
Zu
Ihrer Information habe
5
Wenn dies für jemanden nicht funktioniert, sollten Sie sich auch die Antwort von @ Gilles ansehen. Insbesondere können der private Bereich und die~/.ssh Verzeichnisse nur von dem Benutzer beschrieben werden.
Ostrokach
Ich weiß, das ist alt, aber ich danke @centic eine Million. Ich war mir sicher, dass meine Berechtigungen korrekt waren, habe mich aber nie darum gekümmert, die Verzeichnisse $ HOME und .ssh / zu überprüfen.
Jdferreira
Hat für mich gearbeitet. Vielen Dank!
Ivan Kovtun
12

Checken Sie in / etc / ssh / sshd_config ein, um die Authentifizierung mit einem Schlüssel zu ermöglichen. Sie sollten so etwas in sich haben und sicherstellen, dass die Zeilen nicht kommentiert werden:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

PS: Vergiss nicht, sshd nach dem Ändern der Datei neu zu starten (/etc/init.d/sshd restart)

Patkos Csaba
quelle
Überprüfen Sie zusätzlich zu Patkos Csabas Antwort die Berechtigungen Ihres lokalen und Remote-Ordners ~ / .ssh.
In meinem Fall AuthorizedKeysFilewurde auskommentiert und ich musste auch einen absoluten Pfad angeben authorized_keys.
Andrew
Ich erhalte die Meldung "Es konnte keine Verbindung zu Ihrem Authentifizierungsagenten hergestellt werden." beim Versuch, ssh-add
Manticore
Dies sollte die ausgewählte Antwort sein
Francisco Tapia
Vielleicht verstehst du die Kommentare nicht. Die auskommentierten Zeilen zeigen Ihnen die Standardwerte. Sie müssen sie nicht auskommentieren, wenn Sie den Standardwert verwenden möchten. Sie müssen die Eigenschaft nur auskommentieren, wenn Sie den Standardwert überschreiben möchten.
clearlight
5

Ich stellte fest, dass das Problem bei meinem System darin bestand, dass das Benutzerverzeichnis (/ home / username) mit den falschen Berechtigungen ausgestattet war. Es war drwxr-x-w-und musste sein drwxr-xr-x(mit schriftlicher Genehmigung nur für den Eigentümer). Die Lösung war, chmod zu verwenden:

sudo chmod 0755 /home/username
Charlie
quelle
1
Yah! Hat für mich gearbeitet. ssh gab mir eine Passwortabfrage, weil ich die Bestätigungen verpfuscht habe.
clearlight
4

Ich bin hier kein Experte, aber auch auf ein solches Problem gestoßen, hier sind meine zwei Cent zusätzlich zu all den anderen Vorschlägen.

Manchmal wird ssh-copy-idder falsche Schlüssel auf den Remote-Server kopiert (dies kann vorkommen, wenn Sie mehrere Schlüssel haben und / oder nicht standardmäßige Namen für Schlüsseldateien verwenden) oder Ihr Authentifizierungsagent ist falsch konfiguriert.

Hier ist ein Zitat aus den Manpages :

Wenn die Option -i angegeben ist, wird die Identitätsdatei (standardmäßig ~ / .ssh / id_rsa.pub) verwendet, unabhängig davon, ob sich in Ihrem ssh-agent Schlüssel befinden. Wenn andernfalls ssh-add -L eine Ausgabe bereitstellt, wird diese der Identitätsdatei vorgezogen.

Grundsätzlich möchten Sie Folgendes überprüfen:

  • Ihr Systemauthentifizierungsagent (normalerweise ssh-agent) erkennt die Schlüssel, die Sie verwenden möchten ( ssh-add -LAusgabe prüfen )
    • Wenn Sie den gewünschten Schlüssel nicht sehen, fügen Sie ihn mit ssh-add hinzu
  • Sie haben ssh-copy-iddenselben Schlüssel auf den Remote-Computer kopiert (melden Sie sich einfach mit dem Kennwort beim Remote-Server an und überprüfen Sie den Inhalt von ~/.ssh/authorized_keys).
    • Wenn Sie den gewünschten Schlüssel nicht auf dem Remote-Server sehen, können Sie implizit angeben, ssh-copy-idwelchen Schlüssel Sie kopieren möchten:ssh-copy-id -i ~/.ssh/some_public_key

Ich hoffe, das hilft.

Dmitry Pashkevich
quelle
1
Du hast den Nagel auf den Kopf getroffen! Graben durch mein ssh-copy-id Problem ist: DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1), die der alphabetischen ersten Schlüssel ausfällt - in meinem Fall habe ich eine hatte id_boot2docker.pub(was für boot2docker ssh Sachen anscheinend der Standardname ist). Scheint, als gäbe es eine Reihe verschiedener Implementierungen von ssh-copy-id; meins kam von brew install ssh-copy-id, was wiederum von openssh-portable übernommen wird. Meine Manpage erwähnt dieses Verhalten ausdrücklich ...
Christian Ulbrich
3

Das häufigste Problem sind ungültige Berechtigungen auf der Serverseite. Es darf keine Ihr Home - Verzeichnis, ~/.sshund ~/.ssh/authorized_keysbeschreibbar sind von jedermann , aber sie (insbesondere dürfen sie nicht seine Gruppe beschreibbare).

Wenn dies nicht das Problem ist, ssh -vvv serverrufen Sie die Kundenansicht der Konversation auf. Stellen Sie insbesondere sicher, dass der Client den Schlüssel mit dem Server versucht.

Gilles 'SO - hör auf böse zu sein'
quelle
Vielen Dank!!! Ich verstehe nicht , warum, aber Ihr Home - Verzeichnis , ~/.sshund ~/.ssh/authorized_keyskann von niemandem sein beschreibbar , sondern Sie.
Ostrokach
2

Zusätzlich zu all dem kann man immer die sshd-Protokolldatei überprüfen:

/var/log/auth.log
Omer Dagan
quelle
1

Ich habe die anderen Fixes ausprobiert, aber festgestellt, dass ich das Home-Verzeichnis ändern musste, damit andere keine Schreibrechte haben. Das Home-Verzeichnis war 777. Ich habe es in 755 geändert und es hat funktioniert.

Dulcana
quelle
1
welcome @dulcana, er versucht, ein passwortloses SSH-Login einzurichten, wie das Ändern der Berechtigungen auf 755 helfen könnte, das Problem zu lösen.
Francisco Tapia
@FranciscoTapia Das liegt daran, dass sshd sicherstellt, dass andere Benutzer die authorized_keys-Datei nicht in böswilliger Absicht erstellt haben können. Dabei wird die Anmeldung mit dem ssh-Schlüssel verweigert, wenn eine Gruppe oder eine andere Person die Datei oder einen ihrer Eltern schreiben kann. Andere Antworten haben dies ebenfalls erwähnt.
Ángel
0

In meinem Fall enthielt / etc / ssh / sshd_config den folgenden Parameter:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys2

Da ssh-copy-id eine Datei mit dem Namen authorized_keys erstellt hat, musste ich den Eintrag auf den neuen Namen ändern. Weitere Informationen zu veralteten authorized_keys2

Laplasz
quelle
0

Als Ergänzung zu Omer Dagans Antwort für neuere CentOS 7 verwenden Sie:

journalctl -f -u sshd

zum Betrachten der sshd-Protokolle auf dem Server.

david.perez
quelle
-1

Das Problem war, dass RSAAuthentication in / etc / ssh / ssh_config deaktiviert war

Jackhab
quelle