Der Server fragt weiterhin nach dem Kennwort, nachdem ich meinen öffentlichen SSH-Schlüssel in authorized_keys kopiert habe

44

Ich habe einen Ubuntu Server, der in einer Cloud läuft. Ich habe einen Benutzer erstellt ( git). In dem Ordner habe /home/gitich das .ssh/Verzeichnis und die authorized_keysDatei erstellt.

Wenn ich jedoch meinen öffentlichen SSH-Schlüssel in die authorized_keysDatei lege , fragt der Server mich weiterhin nach dem Kennwort.

Was habe ich falsch gemacht?

Luis Dalmolin
quelle
Wo setzen Sie Ihre Öffentlichkeit? im user git oder im root? wie kommst du darauf als ssh <du> @ <server> o <git> @ <server> oder root @ <server> .. überprüfe das und füge weitere Informationen hinzu.
Maniat1k

Antworten:

42

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 -vFlag (oder -vvoder -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.

  • Stellen Sie sicher, dass /home/git/.ssh/authorized_keyses sich im Besitz von befindet git.
  • Stellen Sie sicher, dass /home/git/.ssh/authorized_keysder Modus 600 ( -rw-------) ist.

Überprüfen Sie auch die /etc/ssh/sshd_configDatei.

  • PubkeyAuthentication sollte auf eingestellt sein yes
  • Es gibt auch die AuthorizedKeysFileDirektive, 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.
xeyes
quelle
Vielen Dank! Ich werde diese Optionen ausprobieren und später auf Feedback zurückkommen!
Luis Dalmolin
Was machst du, wenn du keine /var/log/auth.logDatei siehst ? Gibt es eine Möglichkeit, dies einzuschalten?
Steve Robbins
1
Protokolle können in / var / log / secure, wenn Sie keine /var/log/auth.log haben
CoverosGene
Dummer Fehler, ich hatte die .pub-Datei in den .ssh-Ordner auf dem Server verschoben, zu dem ich eine Verbindung herstellen wollte. Stellen Sie sicher, dass Sie es in den Ordner authorized_keys verschieben.
CenterOrbit
Ich musste auch die Gruppenschreibberechtigungen aus meinem Home-Verzeichnis entfernen. Dann habe ich ssh mitsudo service ssh restart
Dylan Pierce
19

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!)

Tausendfüßler
quelle
Dies ist sicherlich hilfreich, aber ich denke, dies ist eher eine Ergänzung zur Antwort von xeyes .
Gertvdijk
1
Oh mein Gott, vielen Dank! Meine Augen brannten, weil die ganze Suche, die ich auf Google machte. Endlich hat es geklappt! Ich danke dir sehr.
GTRONICK
Mann, danke! ich habe stundenlang nach einer lösung gesucht ... und damit alle meine probleme gelöst.
Afaria
Jep. Das war's. Ich
bin
Überprüfen Sie auch in / etc / passwd, welches das Ausgangsverzeichnis des Benutzers ist. Mein bizarres Problem war, dass es kein Standardproblem gab
drodsou
5

Es gibt verschiedene Möglichkeiten, dies zu lösen: Sie können entweder sshd(serverseitig) oder ssh(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.

sshFügen Sie dem sshBefehl einige Optionen hinzu, um (clientseitig) die Pubkey-Authentifizierung zu verwenden :

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

Wenn dies funktioniert, können Sie die PasswordAuthentication=noOption dauerhaft in der Konfigurationsdatei des ssh-Clients /etc/ssh/ssh_configsystemweit oder ~/.ssh/configbenutzerspezifisch festlegen (Details siehe man ssh_config).

tohuwawohu
quelle
1
Standardmäßig bevorzugen alle SSH-Client-Konfigurationen ( /etc/ssh/ssh_config) auf Debian / Ubuntu-Systemen dies bereits und versuchen es zuerst, wie Sie beim Aufrufen im ausführlichen Modus sehen werden. PubkeyAuthenticationssh
Gertvdijk
3

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:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect
user1576
quelle
1

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.

Sieger
quelle
1
Ich habe die Berechtigungen und dreifach überprüft 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.
jrhorn424
Stellen Sie sicher, dass Sie auch das ----- END RSA PRIVATE KEY ----- Bit haben.
bis
1

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:

ssh-add path/to/private/key
Max
quelle
1

Sie können Ihren Schlüssel auch dem SSH-Agenten hinzufügen:

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)
TTT
quelle
0

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_keysof hinzugefügt hatgituser

Stevie G
quelle
0

Auf einem Rechner mit Ubuntu 18.04.02 LTS hat der Vorschlag, Berechtigungen ~/.sshauf 600 zu setzen, bei mir nicht funktioniert. Ich musste die Berechtigungen auf 700 setzen, und dann funktionierte alles einwandfrei.

Azaghal
quelle
0

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.

Keith
quelle
0

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:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
Aymen Alsaadi
quelle