Warum funktioniert die automatische Anmeldung über ssh mit autorisierten Schlüsseln nicht?

12

Ich habe ein privates / öffentliches dsa-Schlüsselpaar erstellt. Ich habe den öffentlichen Schlüssel auf dem Server eingegeben

~/.ssh/authorized_keys

Alles ist wie mein anderer Server eingerichtet, aber es scheint, als würde der Server meine Bemühungen einfach ignorieren.

Magnar
quelle
Prüfen /etc/ssh/ssh_configund /etc/ssh/sshd_configum sicherzustellen , dass nichts , was Sie wollen , ist deaktiviert.
Kristopher Johnson
Sie sollten auch sshd_config überprüfen.
Vagnerr
Vielen Dank. Ich habe die Antwort aktualisiert (die ursprünglich nur ssh_config erwähnte).
Kristopher Johnson
Alle oben genannten Diskussionen sind perfekt, wenn Sie einen OpenSSh-Stil von SSH verwenden. Wenn Ihr System ssh2 verwendet, hat es eine völlig andere Art, Schlüssel zu verwalten. Dieser Artikel beschreibt das Wie und Was. burnz.wordpress.com/2007/12/14/…
chris
1
Normalerweise sollten Sie bei der Überprüfung /var/log/auth.logvon Debian-Systemen oder /var/log/secureRedHat- Systemen einen klaren Hinweis darauf geben, was falsch dargestellt wird (normalerweise Berechtigungsprobleme)
Giovanni Toraldo,

Antworten:

15

Obwohl Ihr Problem möglicherweise bereits durch andere Antworten gelöst wurde, habe ich mich von genügend Computern ausgeschlossen, um die Änderungen von sshd_config vor dem Abmelden nicht zu validieren. Daher habe ich den folgenden Prozess entwickelt, der für das zukünftige Debuggen von Änderungen der sshd-Konfiguration hilfreich sein kann:

Trennen Sie eine aktive SSH-Verbindung NICHT, bevor das Testen das erwartete Verhalten überprüft hat.

ein. Überprüfen Sie, was Ihrer Meinung nach sshd tun soll

b. Überprüfen Sie mit "-t", ob die Konfiguration gültig ist.

c. Starten Sie eine ausführliche Testversion des Servers, den Sie live überwachen können

d. Starten Sie eine ausführliche 'Test'-Client-Verbindung, die Sie live überwachen können


ein. Überprüfen Sie, was Ihrer Meinung nach sshd tun soll

Überprüfen Sie die sshd-Konfigurationsdatei ohne den gesamten Kommentar wie folgt (vorausgesetzt, sshd_config ist die richtige Datei und befindet sich in / etc / ssh).

$ grep -v "^ #" / etc / ssh / sshd_config | grep -v "^ $"

Dies klärt nur die Dinge, damit wir überprüfen, was wir zu ändern glauben (nicht unbedingt, ob es richtig ist oder nicht).

b. Überprüfen Sie mit "-t", ob die Konfiguration gültig ist.

Von der Manpage der sshd's, die ich benutze,

-t Testmodus. Überprüfen Sie nur die Gültigkeit der Konfigurationsdatei und die Richtigkeit der Schlüssel. Dies ist nützlich, um sshd zuverlässig zu aktualisieren, da sich die Konfigurationsoptionen ändern können.

Andere Änderungen können subtilere Umstände haben. Deaktivieren Sie beispielsweise die Kennwortauthentifizierung erst, wenn Sie sicher sind, dass die Authentifizierung mit öffentlichem Schlüssel ordnungsgemäß funktioniert.

c. Starten Sie eine ausführliche Testversion des Servers, den Sie live überwachen können

$ sudo / usr / sbin / sshd -ddd -p 9999

Dadurch bleibt Ihre vorhandene Arbeitssitzung aktiv, Sie erhalten jedoch eine weitere Instanz von sshd, mit der Sie Ihre neuen Konfigurationsänderungen überprüfen können. SSHD wird jetzt im Vordergrund auf einen benutzerdefinierten Port (in unserem Beispiel 9999) ausgeführt und überträgt viele verrauschte Debug-Informationen, die Sie in / var / log / authlog (oder möglicherweise /var/log/auth.log abhängig) verfolgen können auf Ihrem Betriebssystem.)

d. Starten Sie eine ausführliche 'Test'-Client-Verbindung, die Sie live überwachen können

Führen Sie die SSH-Client-Verbindung im ausführlichen Modus aus, um auf Ihrem Bildschirm weitere Informationen anzuzeigen, die Sie möglicherweise zu einem besseren Debuggen Ihres Fehlers führen.

$ ssh -vvv -p 9999 Servername

Sie sollten jetzt über genügend Informationen in den Protokolldateien des Servers oder im Verbindungsbildschirm des Clients verfügen, um Ihr Problem einzugrenzen.

Die Lösung besteht im Allgemeinen aus Dateiberechtigungen (wie von Magnar und Setatakahashi gezeigt).

Viel Glück

samt
quelle
Ich denke, Sie sollten auch die Datei ssh_config auf der Client-Seite überprüfen, um sicherzustellen, dass sie das tut, was Sie erwarten. Verwenden Sie etwas wie das Folgende, um Kommentare abzusuchen:> grep -v "^ #" / etc / ssh / ssh_config | grep -v "^ $"
samt
Nun, die Client-SSH-Konfiguration kann jederzeit repariert werden. Es ist der Server, von dem Sie gesperrt werden, wenn Sie ihn falsch konfiguriert haben.
Soviero
33

Der Server ignoriert Ihre Datei "authorized_keys", wenn die Eigentümereigenschaften falsch sind. Wenn Sie dies ändern, wird Folgendes behoben:

chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys
Magnar
quelle
6
ssh -vvv -l Benutzername server.domain wird Ihnen sagen, ob Sie einen gültigen Schlüssel senden
Dave Cheney
Manchmal habe ich gesehen, wie sich sshd über schlechte Berechtigungen im Home-Verzeichnis beschwert hat - also habe ich "chmod o-rwx ~" (oder zumindest "chmod ow ~") zur Liste hinzugefügt, wie es setatakahashi getan hat. Dies wird normalerweise deutlich, wenn die Protokolldatei überwacht wird - die Fehlermeldungen, die ich dort gesehen habe, zeigten immer in die richtige Richtung.
Olaf
Diese Antwort scheint am wahrscheinlichsten zu sein, aber Dave Cheneys Kommentar ist der einzige Weg, um zu sehen, was wirklich los ist. Überprüfen Sie auch die Serverprotokolle.
dwc
Das war mein Problem. Ich habe stundenlang meinen Kopf geschlagen. Vielen Dank!
Sam Soffes
1
Dies hat den Trick, aber meine vorherigen Berechtigungen waren 0775und 0644sind. Warum hat das Reduzieren der Berechtigungen geholfen? Ist dies eine Sicherheitsvorkehrung, die irgendwo konfiguriert ist?
Dean
11

$ chmod 700 ~

$ chmod 700 ~ / .ssh

$ chmod 600 ~ / .ssh / authorized_keys

Suchen Sie in / etc / ssh / sshd_config nach diesen Attributen

$ sudo grep PubkeyAuthentication / etc / ssh / sshd_config

$ sudo grep Protokoll / etc / ssh / sshd_config

Setatakahashi
quelle
2
Hervorragender Punkt zu ~, Sie müssen sicherstellen, dass niemand außer Ihnen in Ihr Home-Verzeichnis schreiben kann, sonst könnten sie Ihr ~ / .ssh-Verzeichnis umbenennen
Dave Cheney
das letzte chmod sollte sein: $ chmod 600 ~/.ssh/authorized_keysnicht$ chmod 600 ~/.sHh/authorized_keys
SooDesuNe
3
Was sollen die Attributwerte sein ?
Michael
0

Eine weitere wichtige Falle ..

Wenn Ihr Home-Verzeichnis verschlüsselt ist, hat sshd keinen Zugriff auf ~ / .ssh / autorisierte_Tasten.

Siehe diese Antwort

ApriOri
quelle