Ich habe einen Ubuntu Server, der in einer Cloud läuft. Ich habe einen Benutzer erstellt ( git
). In dem Ordner habe /home/git
ich das .ssh/
Verzeichnis und die authorized_keys
Datei erstellt.
Wenn ich jedoch meinen öffentlichen SSH-Schlüssel in die authorized_keys
Datei lege , fragt der Server mich weiterhin nach dem Kennwort.
Was habe ich falsch gemacht?
Antworten:
Auf der Serverseite protokolliert der ssh-Daemon Fehler.
/var/log/auth.log
Überprüfen Sie diese Datei, um zu sehen, was gemeldet wird.Auf der Clientseite können Sie beim Herstellen der Verbindung das
-v
Flag (oder-vv
oder-vvv
) hinzufügen , um die Ausführlichkeit zu erhöhen. Möglicherweise können Sie Ihr Problem auf diese Weise identifizieren.Hier sind andere Dinge zu überprüfen.
/home/git/.ssh/authorized_keys
es sich im Besitz von befindetgit
./home/git/.ssh/authorized_keys
der Modus 600 (-rw-------
) ist.Überprüfen Sie auch die
/etc/ssh/sshd_config
Datei.PubkeyAuthentication
sollte auf eingestellt seinyes
AuthorizedKeysFile
Direktive, die den Pfad festlegt, in dem sich die autorisierten Schlüssel befinden sollen. Stellen Sie sicher, dass es auskommentiert ist oder die Standardeinstellung von%h/.ssh/authorized_keys
.quelle
/var/log/auth.log
Datei siehst ? Gibt es eine Möglichkeit, dies einzuschalten?sudo service ssh restart
Stellen Sie außerdem sicher, dass Ihr Benutzer-Ausgangsverzeichnis (in Ihrem Fall / home / git) nur von Ihnen beschreibbar ist. Ich hatte dieses Problem einmal, weil mein Ausgangsverzeichnis gruppenbeschreibbar war. /var/log/auth.log sagte darin: "Authentifizierung abgelehnt: falscher Besitz oder Modi für Verzeichnis / home / chuck". (Dies soll sicherstellen, dass keine authorized_keys-Datei verwendet wird, mit der jemand anders als Sie herumgespielt hat!)
quelle
Es gibt verschiedene Möglichkeiten, dies zu lösen: Sie können entweder
sshd
(serverseitig) oderssh
(clientseitig) so konfigurieren , dass die Kennwortauthentifizierung nicht verwendet wird. Durch Deaktivieren der Kennwortauthentifizierung auf dem Server wird Ihr Server sicherer. Wenn Sie jedoch Ihren Schlüssel verlieren, treten Probleme auf.ssh
Fügen Sie demssh
Befehl einige Optionen hinzu, um (clientseitig) die Pubkey-Authentifizierung zu verwenden :Wenn dies funktioniert, können Sie die
PasswordAuthentication=no
Option dauerhaft in der Konfigurationsdatei des ssh-Clients/etc/ssh/ssh_config
systemweit oder~/.ssh/config
benutzerspezifisch festlegen (Details sieheman ssh_config
).quelle
/etc/ssh/ssh_config
) auf Debian / Ubuntu-Systemen dies bereits und versuchen es zuerst, wie Sie beim Aufrufen im ausführlichen Modus sehen werden.PubkeyAuthentication
ssh
Verwenden Sie ~ / .ssh / config auf Ihrem lokalen Computer? Ich habe dieses Problem festgestellt, wenn ich die IdentityFile-Direktive in der Konfigurationsdatei verwende und auf den öffentlichen Schlüssel zeige. Zum Beispiel:
quelle
Wenn Ihr privater Ordner verschlüsselt ist, kann Ihre
authorized_keys
Datei vor der Anmeldung nicht gelesen werden. Sie müssen es außerhalb Ihres Hauses bewegen.Hier wird erklärt und wie es geht: https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooter
quelle
Sie müssen auch prüfen, ob Ihr öffentlicher Schlüssel zusätzliche Wagenrückläufe enthält. Ich habe den obigen Rat befolgt, um die Datei /var/log/auth.log zu überprüfen. Beim Lesen des Schlüssels ist ein Fehler aufgetreten. Der Schlüssel war ungefähr zwei statt vier Zeilen lang. Es wurden zusätzliche Wagenrückläufe in den Schlüssel eingebettet.
Verwenden Sie im vi-Editor die Tastenkombination Umschalt-j, um die Zeilen zu verbinden und den zusätzlichen Platz in der Schlüsselzeichenfolge zu löschen.
quelle
sshd_config
. Knallte meinen Kopf eine halbe Stunde lang gegen die Wand. Das war mein Fehler! Irgendwie habe ich mir angewöhnt, alle von mir bearbeiteten Dateien mit einem zusätzlichen Zeilenumbruch zu beenden. Selbst mit einem Schlüssel und einem Wagenrücklauf am Ende reicht es aus, die Autorisierung zu verfälschen.Wenn Sie mehrere private Schlüssel haben, verwenden Sie die Option -v in Ihrem Befehl ssh connection, um zu überprüfen, ob Ihre anderen Primärschlüssel für den Verbindungsversuch benötigt werden. Wenn dies nicht der Fall ist, weisen Sie den ssh-Client an, sie mit dem folgenden Befehl zu verwenden:
quelle
Sie können Ihren Schlüssel auch dem SSH-Agenten hinzufügen:
quelle
Es könnte auch sein, dass Sie anrufen
sudo git clone gituser@domain:repo.git
Wobei der root-Benutzer den ssh-Schlüssel nicht zum
authorized_keys
of hinzugefügt hatgituser
quelle
Auf einem Rechner mit Ubuntu 18.04.02 LTS hat der Vorschlag, Berechtigungen
~/.ssh
auf 600 zu setzen, bei mir nicht funktioniert. Ich musste die Berechtigungen auf 700 setzen, und dann funktionierte alles einwandfrei.quelle
Ich hatte die korrekten Dateiberechtigungen für .ssh / directory und authorized_keys, aber dieses Problem mit der Aufforderung zur Kennworteingabe trat aufgrund eines anderen, selbst verursachten Problems auf.
Ich hatte ein mausbasiertes Markieren und Kopieren / Einfügen verwendet, um die Informationen aus meiner lokalen Datei id_rsa.pub in die Datei authorized_keys auf dem Server zu kopieren. Dadurch wurden die Daten erfolgreich als einzelne Zeile kopiert, aber dort waren unerwünschte Leerzeichen am Ende der sichtbaren Zeilen zu sehen, als die Datei mit vi bearbeitet wurde. Sobald ich diese unerwünschten Lücken entfernt hatte, konnte ich sie in Ordnung bringen.
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