Machen Ihnen Ihre öffentlichen SSH-Schlüssel das Leben schwer? Probieren Sie eine dieser Lösungen aus.
SSH ist ein nützliches Tool zum Herstellen einer Verbindung zu Remote-Rechnern. Unter Linux kann jedoch die Fehlermeldung „Berechtigung verweigert (öffentlicher Schlüssel)“ auftreten, die Ihren öffentlichen Schlüssel betrifft. Glücklicherweise gibt es einige einfache Lösungen, mit denen Sie versuchen können, das Problem zu beheben.
Was ist ein öffentlicher Schlüssel?
Wenn Sie unter Linux ein Schlüsselpaar für SSH generieren, erhalten Sie einen öffentlichen und einen privaten Schlüssel. Der private Schlüssel bleibt als streng gehütetes Geheimnis bei Ihnen, der öffentliche Schlüssel wird jedoch an Remote-Server übertragen, damit Sie sich ohne Passwort anmelden können. Ihr lokaler SSH-Client gleicht den öffentlichen Schlüssel mit dem privaten Schlüssel ab, wenn Sie eine Verbindung herstellen.
Der Vorteil dieser Methode besteht darin, dass Sie nur den öffentlichen Schlüssel herausgeben müssen. Solange Sie Ihren privaten Schlüssel geheim halten, sollte dies Ihre Sicherheit gewährleisten, falls Ihr öffentlicher Schlüssel kompromittiert wird. Der öffentliche Schlüssel allein ist nutzlos.
OpenSSH, der am weitesten verbreitete SSH-Client und -Server in der Open-Source-Welt, erfordert, dass die Datei „any“ enthält öffentliche Schlüssel auf dem Remote-Computer („.ssh/authorized_keys“ in Ihrem Home-Verzeichnis), um bestimmte Berechtigungen zu haben. Es funktioniert nicht, wenn die Schreibberechtigungen für andere Benutzer festgelegt sind, was als „weltweit beschreibbar“ bezeichnet wird. Da der Verzeichnisname mit einem Punkt (.) beginnt, wird er in keiner ls-Liste angezeigt, es sei denn, Sie verwenden den Befehl ls -A.
Die Berechtigungen können sich ändern, wenn die Datei von einem anderen Computer kopiert wurde oder Sie sie selbst erstellt haben. Glücklicherweise ist dies leicht zu beheben.
Überprüfen Sie Ihre Public-Key-Berechtigungen
Die Datei „authorized_keys“ ist einfach eine Klartextdatei, die alle öffentlichen Schlüssel von Clients enthält, mit denen Sie sich bei Ihrem Konto auf dem Remote-Computer anmelden können sollen. Um seine Berechtigungen anzuzeigen, Verwenden Sie den ls-Befehl mit der Option -l:
ls -l ~/.ssh/authorized_keys
Dadurch werden die Berechtigungseinstellungen für den Eigentümer, die Gruppe und andere Benutzer angezeigt. Achten Sie auf die letzten sechs Buchstaben in der Zeichenfolge. Wenn Sie darin ein „w“ sehen, bedeutet das, dass die Gruppe oder andere darauf schreiben können, was es unsicher macht.
Sie möchten, dass diese Datei von Ihnen beschreibbar ist, nicht jedoch von der Gruppe oder anderen. Um den richtigen Benutzern Zugriff zu gewähren, Sie können die Berechtigungen mit chmod ändern.
Es gibt zwei Möglichkeiten: numerisch und symbolisch.
Der numerische Weg ist kürzer, aber Sie müssen sich die oktalen Berechtigungszahlen merken:
chmod 700 ~/.ssh/authorized_keys
Die symbolische Methode ist mnemotechnischer:
chmod go-w ~/.ssh/authorized_keys
Schlüssel mit SSH-Agent sicher kopieren
Sie können alle öffentlichen Schlüssel manuell von Ihrem Computer kopieren und in den einfügen ~/.ssh/.authorized_keys Datei, aber die Verwendung des SSH-Agent-Programms verringert die Wahrscheinlichkeit von Berechtigungsfehlern.
Um den SSH-Agenten zu starten, verwenden Sie diesen Befehl:
eval "$(ssh-agent-s)"
Um sich mit ssh-agent bei einem Remote-Server anzumelden, verwenden Sie die Option -A mit ssh
ssh -A [email protected]
Überprüfen Sie die SSHD-Einstellungen des Remote-Servers
Wenn einer dieser Versuche fehlschlägt, müssen Sie möglicherweise einige Konfigurationsänderungen am SSHD-Server auf dem Remote-Computer vornehmen, wenn Sie über Root-Zugriff verfügen. Wenn nicht, müssen Sie sich wahrscheinlich an den Systemadministrator wenden, um etwaige SSH-Verbindungsprobleme zu lösen. Dies ist der letzte Ausweg, da dadurch die Sicherheit Ihres Systems beeinträchtigt werden könnte.
Die systemweite Konfigurationsdatei für sshd ist /etc/ssh/sshd_config. Da es Root gehört, müssen Sie es mit sudo bearbeiten. Um es beispielsweise mit Vim zu bearbeiten:
sudo vim /etc/ssh/sshd_config
Um es sshd zu ermöglichen, dass Sie sich anmelden können, selbst wenn Ihre „authorized_keys“-Datei weltweit beschreibbar ist, setzen Sie die Option „StrictModes“ in dieser Datei auf „no“.
Speichern Sie es und starten Sie den SSH-Server neu:
sudo systemctl restart sshd.service
Jetzt können Sie SSH-Berechtigungsfehler für öffentliche Schlüssel beheben
Es können Fehler bezüglich der öffentlichen SSH-Schlüssel auf Remote-Systemen auftreten. Glücklicherweise müssen Sie in den meisten Fällen nur die Dateiberechtigungen überprüfen und festlegen, damit niemand sonst Ihren Schlüssel sehen kann. Sie können auch ssh-agent für zuverlässigere Verbindungen verwenden. Als letzten Ausweg können Sie den SSH-Server weniger streng machen.