Ich habe seit ein paar Stunden damit zu kämpfen, also ist jede Hilfe sehr dankbar ...
Ich habe zwei Server, die ich beide ssh
mit öffentlichen Schlüsseln von OSX nutzen kann, überhaupt keine Probleme, also bin ich mir sicher, dass alles in Ordnung ist sshd_config
.
Ich versuche, einen Cron-Job für rsync
die Synchronisierung der beiden Server zu konfigurieren und Server B (Sicherung) ssh
mit einem öffentlichen Schlüssel auf Server A zu übertragen.
Ich kann nicht für mein ganzes Leben herausfinden, warum meine öffentlichen Schlüssel nicht gefunden werden - sie befinden sich in ~/.ssh/
(dh /root/.ssh
) und alle Dateiberechtigungen sind für A & B korrekt.
Dies ist die Ausgabe:
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: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug3: no such identity: /root/.ssh/id_rsa
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
Beachten Sie auch, dass nach privaten Schlüsseln gesucht wird, die es nicht gibt ...
drwx------. 2 root root 4096 May 25 10:15 .
dr-xr-x---. 4 root root 4096 May 24 18:52 ..
-rw-------. 1 root root 403 May 25 01:37 authorized_keys
-rw-------. 1 root root 0 May 25 01:41 config
-rw-------. 1 root root 1675 May 25 02:35 id_rsa_tm1
-rw-------. 1 root root 405 May 25 02:35 id_rsa_tm1.pub
-rw-------. 1 root root 395 May 25 02:36 known_hosts
quelle
ls -la /root/.ssh/
_tm1
aus Ihren Schlüsseldateinamen (dhmv id_rsa_tm1 id_rsa
undmv id_rsa_tm1.pub id_rsa.pub
)Antworten:
Schauen Sie sich Ihre SSH-Manpage an:
oder die Manpage ssh_config:
Sie sehen, es gibt einige spezielle Dateinamen, die versucht werden, wenn Sie keinen Schlüssel angeben. Dies sind auch die Dateien, die Sie in Ihrer Protokollausgabe sehen.
Um einen Schlüssel in einer Datei mit einem anderen Namen zu verwenden, haben Sie drei Möglichkeiten:
-i
Option explizit an .IdentityFile
Option.ssh-add
.Für interaktive Sitzungen ist der Agent am flexibelsten. Für Ihren Cron Job ist die
-i
Option wahrscheinlich die einfachste.quelle
Eine fehlerhafte authorized_keys-Datei auf dem Zielhost ist ein weiterer Grund, warum ssh die Meldung "Wir haben kein Paket gesendet" ausgibt und nach einem Kennwort fragt, anstatt pubkey auth zu verwenden:
Das Problem in diesem speziellen Fall war, dass die öffentlichen Schlüsseldaten, die
.ssh/authorized_keys
auf dem Zielhost eingefügt wurden , nicht das erste Zeichen enthielten:Die Lösung bestand einfach darin, die fehlenden "s" hinzuzufügen.
Und so:-
quelle
Diese genaue Folge von Fehlermeldungen in der Frage kann auch bei einem nicht übereinstimmenden privaten / öffentlichen Schlüsselpaar auf der lokalen Seite auftreten . Nein, das ergibt keinen Sinn, aber ich habe mir lange die Haare ausgerissen, um herauszufinden, was los war.
.ssh/mykey.pub
kopiert.ssh/authorized_keys
..ssh/mykey
den richtigen privaten Schlüssel, der mit dem öffentlichen Schlüssel von System A übereinstimmt, hat jedoch auch eine.ssh/mykey.pub
Datei, bei der es sich um eine Nichtübereinstimmung handelt, möglicherweise die vorherige Version eines ersetzten Schlüssels.SSH von B nach A (
ssh -i mykey A
) schlägt mit den fraglichen Nachrichten fehl, insbesondere, wenn Sie-vv
den SSH-Client aktivieren, wird Folgendes angezeigt:Dies ist eine Lüge, weil der eigentliche Schlüssel nicht ausprobiert wurde. Anscheinend wurde die lokale öffentliche Schlüsseldatei mit dem passenden Namen verwendet, um herauszufinden, ob es wahrscheinlich funktioniert, und dann wurde tatsächlich nichts unternommen, als sie nicht übereinstimmten. Keine der Debug-Informationen auf beiden Seiten weist wirklich auf das Problem hin.
quelle
Die Standarddateinamen, nach denen ssh sucht, sind
id_rsa
undid_rsa.pub
.Wenn Sie andere Dateinamen verwenden möchten, müssen Sie entweder sie in
ssh_config
(mit derIdentityFile
Einstellung) oder über den SSH - Befehlszeilenparameter .-i
quelle
Ich hatte das gleiche Problem bei RedHat. überprüfte die Protokolle und stellte fest, dass das Basisverzeichnis falsche Benutzerrechte hatte.
sshd[2507]: Authentication refused: bad ownership or modes for directory /home/user
Fixing home dir rights löste dies.
quelle
~/.ssh
dir. Zumindest auf Fedora 28, als die~/.ssh
Berechtigungen 0775 waren, konnte ich keine Verbindung mit öffentlichen / privaten Schlüsseln herstellen. Also habe ich die Berechtigungen auf 0755 geändert und wie ein Zauber gearbeitet :)Ein einfacher Weg, um in Debian / Ubuntu zu debuggen, ist: Verbinde dich mit dem Passwort und vervollständige das Protokoll
Wenn Sie versuchen, eine Verbindung von einem anderen Terminal herzustellen, wird der Fehler angezeigt ...
In meinem Fall war das / root-Verzeichnis 770 und nicht 700, was die Standardeinstellung ist. Der Fehler war "Authentifizierung abgelehnt: falscher Besitz oder Modi für das Verzeichnis / root".
Repariere das und du bist fertig.
quelle
Versuchen
Ein mögliches Problem mit dem Verkaufskontext
quelle
Nach dem Rennen
ssh-copy-id user@remote-host
normalerweise sollte es funktionieren. Wenn dies jedoch fehlschlägt, versuchen Sie Folgendes: Melden Sie sich beim Remote-Host als der Benutzer an, den Sie in Zukunft anmelden möchten, und führen Sie Folgendes aus:
Es hat mir geholfen.
quelle
Was für mich passiert ist, ist, dass ich 2 VMs habe, auf die ich von meinem lokalen Computer aus zugreifen kann (2 Schlüssel id_rsa.pub und id_rsa2.pub). Ich habe festgestellt, dass meine ssh-Verbindung standardmäßig id_rsa.pub für jede Verbindung von ssh [email protected] verwendet. Ich habe mein Problem gelöst, indem ich eine Konfigurationsdatei hinzugefügt habe und die Identität angegeben habe, die für jeden Host verwendet werden soll:
quelle
Klient:
quelle