GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Behebung des SSH-Fehlers „Berechtigung verweigert (Publickey)“ in Linux

Dieses kurze Tutorial zeigt Ihnen, wie Sie den SSH-Fehler „sign_and_send_pubkey:signing failed:agent failed operation Permission denied (publickey)“ unter Linux beheben.

Wenn Sie versuchen, sich über SSH mit dem Remote-Server zu verbinden, wird möglicherweise der Fehler „Berechtigung verweigert“ angezeigt. Dieser Fehler kann aus verschiedenen Gründen auftreten. Und die Behebung dieses Problems hängt von der genauen Ursache des Fehlers ab.

In meinem Fall hatte ich die öffentlichen und privaten Schlüssel auf meinem Ubuntu 16.04-Desktop gespeichert. Nach der Veröffentlichung von Ubuntu 18.04 entschied ich mich für ein Upgrade auf diese neuere Version. Ich bevorzuge eine Neuinstallation gegenüber Distributions-Upgrades.

Also habe ich eine Sicherungskopie der Hauptordner meines Home-Verzeichnisses erstellt, einschließlich des .ssh-Ordners, der öffentliche und private Schlüssel auf einer externen Festplatte enthielt.

Nach der Installation habe ich SSH auf Ubuntu 18.04 aktiviert und alles einschließlich der SSH-Schlüssel wiederhergestellt.

Als ich nun versuchte, mich mit ssh mit dem Remote-Server zu verbinden, dachte ich, es würde sofort funktionieren, weil ich die gleichen öffentlichen und privaten Schlüssel hatte.

Aber es hat nicht funktioniert. SSH hat mir diesen Fehler gegeben:

sign_and_send_pubkey: signing failed: agent refused operation
[email protected]: Permission denied (publickey).

Wenn Sie sich in einer ähnlichen Situation befinden, in der Sie Ihre SSH-Schlüssel von einer anderen Quelle kopiert haben, lassen Sie mich Ihnen zeigen, wie Sie diesen SSH-Fehler beheben können.

Dateiberechtigungen für den ~/.ssh-Ordner und seinen Inhalt korrigieren

Als Faustregel können Sie die folgenden Berechtigungen für das ssh-Verzeichnis und seine Dateien festlegen (private Schlüssel, öffentliche Schlüssel, bekannte_Hosts, ssh-Konfigurationsdatei usw.)

Element Erlaubnis
.ssh-Verzeichnis 700 ((drwx------)
öffentliche Schlüssel 644 (-rw-r--r--)
private Schlüssel 600 (-rw-------)
autorisierte_schlüssel 600 (-rw-------)
bekannte_Hosts 600 (-rw-------)
config 600 (-rw-------)

Möglicherweise haben Sie nicht alle Dateien, aber Sie müssen hier öffentliche und private Schlüssel haben.

Sehen wir uns nun an, wie Sie die Dateiberechtigung für die SSH-Schlüssel und andere Dateien ändern.

Behebung des Fehlers „Berechtigung verweigert (Publickey)“

Das Problem liegt hier also bei den Dateiberechtigungen. Sie sehen, als ich die Dateien kopierte, war der USB im FAT-Dateiformat von Microsoft. Diese Datei unterstützt die Dateiberechtigungen von UNIX/Linux nicht.

Und daher wurden die Berechtigungen für die kopierten SSH-Schlüssel auf 777 geändert.

Für SSH sind die Dateiberechtigungen zu offen. Es ist einfach nicht erlaubt, 777-Berechtigungen für die öffentlichen oder privaten Schlüssel zu haben. Und deshalb hat SSH hier die Verbindung abgelehnt.

ls -l .ssh
-rwxrwxrwx 1 abhishek abhishek 1766 Nov 12  2017 id_rsa
-rwxrwxrwx 1 abhishek abhishek  398 Nov 12  2017 id_rsa.pub
-rwxrwxrwx 1 abhishek abhishek 4214 Sep 21 21:39 known_hosts

Der private Schlüssel sollte nur Lese- und Schreibberechtigungen für den Benutzer und keine anderen Berechtigungen für die Gruppe und andere haben.

Sie sollten die Berechtigung mit dem chmod-Befehl ändern:

chmod 600 ~/.ssh/id_rsa

Ebenso sollte der öffentliche Schlüssel keine Schreib- und Ausführungsberechtigungen für Gruppen und andere haben.

chmod 644 ~/.ssh/id_rsa.pub

Nachdem Sie nun die richtigen Berechtigungen vergeben haben, können Sie sich erneut mit ssh verbinden. Zu diesem Zeitpunkt werden Sie nach Ihrem Administratorpasswort gefragt, um die Schlüssel zu entsperren. Geben Sie Ihr Admin-Passwort ein und Sie sollten loslegen können.

Dies lehrte mich auch, dass das Kopieren und Einfügen von Dateien eine schlechte Idee ist und ein ordnungsgemäßes Backup erstellt werden sollte, da sonst alle Dateien die gefährlichen 777-Berechtigungen haben. Ich musste die Dateiberechtigungen für das gesamte Home-Verzeichnis rekursiv ändern und glauben Sie mir, es war keine schöne Sache.

Wie ich bereits sagte, kann es verschiedene Gründe für diesen Fehler geben. Für das Problem im Zusammenhang mit der Berechtigung zum Öffnen von Dateien sollte dieser Fix Ihnen helfen, den Fehler „Berechtigung verweigert (Publickey)“ mit SSH zu beheben. Wenn Sie interessiert sind, können Sie mehr über die SSH-Grundlagen lesen.

Lassen Sie mich im Kommentarbereich wissen, ob der Fix für Sie funktioniert hat oder nicht. Schlagen Sie auch Ihre Meinung zum Kopieren von SSH-Schlüsseln auf andere Computer vor.


Linux
  1. So beheben Sie einen Befehl nicht gefunden-Fehler in Linux

  2. Wie behebt man den Cron-Authentifizierungsfehler unter Linux?

  3. pip freeze gibt einen Fehler zurück:Permission denied:hg

  4. So beheben Sie den Docker Permission Denied-Fehler unter Ubuntu

  5. So richten Sie SSH-Schlüssel für die „kennwortlose“ SSH-Anmeldung unter Linux ein

So beheben Sie SSH-fehlgeschlagene Berechtigung verweigert (publickey,gssapi-keyex,gssapi-with-mic)

So richten Sie die passwortlose SSH-Anmeldung unter Linux mit Schlüsseln ein

Beheben Sie den Fehler „WARNUNG:REMOTE HOST IDENTIFICATION HAS CHANGED“ in Linux

Mount-CIFS-Berechtigung unter Linux verweigert – behoben!

Mount-Fehler (13):Berechtigung mit Windows-Freigabe verweigert

SSH-Berechtigung verweigert (publickey,gssapi-keyex,gssapi-with-mic) | Nicht-Root-Benutzer