Sollte ich bei der Verwendung von SFTP einen unbekannten Hostschlüssel zulassen?

5162
1.21 gigawatts

Ich habe von FTP mit TLS zu SFTP gewechselt, und jetzt erscheint ein Dialogfeld, wenn ich versuche, die Verbindung mit Unknown Host Key für www.example.com herzustellen. Dann werden zwei Optionen angezeigt: Verweigern und Zulassen.

Was bedeutet das? Soll ich Zulassen oder Ablehnen auswählen?

4
Wenn Sie den Schlüssel einmal dauerhaft akzeptiert haben und eines Tages eine Verbindung herstellen, wird ein Dialogfeld mit der Meldung angezeigt, dass sich der Schlüssel geändert hat und sich von dem lokal gespeicherten Schlüssel unterscheidet! - dann sollten Sie sich sorgen und vorsichtig sein. DanFromGermany vor 9 Jahren 0
@ DanFromGermany Richtig. Ich verwende Cyberduck und die Frage wird jedes Mal angezeigt, wenn ich eine Verbindung herstelle, um das Verzeichnis hochzuladen oder zu aktualisieren. Es gibt eine Option für [Immer akzeptieren], und ich frage mich, ob ich diese Option auswähle, wenn sie sich geändert hat. Von dem, was Sie sagen, kann ich immer annehmen und es wird mir sagen, ob es sich vom gespeicherten Wert ändert. 1.21 gigawatts vor 9 Jahren 0
Normalerweise gibt es 3 Optionen: 1. Dauerhaft speichern und warnen, wenn sich Änderungen ergeben. 2. Nur einmal verwenden. 3. Abbrechen. Es gibt keine Option "Immer akzeptieren, auch wenn sie sich ändert", da dies der gesamten Logik der Authentifizierung mit öffentlichen Schlüsseln entgegenwirkt, dies wäre sehr unsicher. Ja, es wird eine große Warnung angezeigt, wenn der gespeicherte öffentliche Schlüssel und der öffentliche Server-Schlüssel nicht mehr übereinstimmen. DanFromGermany vor 9 Jahren 1

2 Antworten auf die Frage

8
MariusMatutiae

SFTP basiert auf SSH; Hosts, mit denen Sie sich wie mit ssh verbinden, stellen Ihnen einen eindeutigen Schlüssel zur Verfügung, mit dem Sie sie identifizieren können. Wenn Sie den Schlüssel akzeptieren, wird zu jeder Zeit, zu der Sie sich mit demselben Host verbinden, der bereitgestellte Schlüssel mit dem Schlüssel verglichen, der beim ersten Mal angegeben wurde (der in $ HOME / .ssh / known-hosts gespeichert ist) und ob die beiden übereinstimmen Sie werden nicht noch einmal gefragt. Wenn stattdessen die beiden Schlüssel nicht übereinstimmen, werden Sie vor einem möglichen Angriff gewarnt (ein Man-in-the-Middle-Angriff, MTIM).

Es ist also im Grunde ein Sicherheitsmerkmal. SSH basiert auf TOFU (Trust On First Use). Das bedeutet, dass Sie den Schlüssel akzeptieren müssen, nachdem Sie mit dem Sysadmin überprüft haben, ob der übergebene Schlüssel tatsächlich ihr Schlüssel ist, und dann die Kommunikation fortsetzen.

BEARBEITEN:

Wie können wir prüfen, ob wir den richtigen Schlüssel erhalten, ohne einen (möglicherweise nicht vorhandenen) Sysadmin zu fragen? Wenn Sie zum ersten Mal eine Verbindung zu einem SSH / SFTP-Server herstellen, wird Folgendes angezeigt:

 $ ssh me@remote The authenticity of host '[remote]:22 ([192.168.1.72]:22)' can't be established. ECDSA key fingerprint is b2:2d:52:1a:40:c2:f9:ca:9a:42:86:76:f4:0b:eb:84. Are you sure you want to continue connecting (yes/no)?  

Notieren Sie sich die Art des Fingerabdrucks (ECDSA, oben) und den Fingerabdruck selbst b2:2d:52:1a:40:c2:f9:ca:9a:42:86:76:f4:0b:eb:84. Gehen Sie jetzt zum Server (entweder physisch oder, im Falle eines VPS, zur Konsole) und gehen Sie ohne Notwendigkeit sudo sunach / etc / ssh. Sie werden sehen, dass es viele .pubDateien gibt. Einer ist ssh_host_ecdsa_key.pub (der Typ des Fingerabdrucks, den wir präsentiert haben). Geben Sie nun diesen Befehl aus:

 $ ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub 

Die Ausgabe muss mit dem Fingerabdruck übereinstimmen, den Sie oben angeboten haben. Wenn dies der Fall ist, können Sie jetzt den Fingerabdruck in der SSH-Sitzung akzeptieren und zu SSH in den Server übergehen.

Es ist nicht notwendig, etwas vom Server zu importieren. Ssh kümmert sich darum.

Danke für die hervorragende Erklärung. Wenn ich mich also mit meinem Webhosting-Unternehmen verbinde, sollte es einen Ort geben, an dem ich diesen Schlüssel finden kann? Dann lade ich es in mein Bekannte-Hosts-Verzeichnis herunter? 1.21 gigawatts vor 9 Jahren 0
@ 1.21gigawatts Bitte siehe meine Bearbeitung. MariusMatutiae vor 9 Jahren 1
1
Martin Prikryl

Dies ist eine überarbeitete Version meines Handbuchs. Woher bekomme ich den Fingerabdruck des SSH-Hostschlüssels, um den Server zu autorisieren?


Sie sollten einen SSH-Hostschlüssel-Fingerabdruck zusammen mit Ihren Anmeldeinformationen vom Serveradministrator erhalten. Den Fingerabdruck des Host-Schlüssels zu kennen und ihn somit überprüfen zu können, ist ein wesentlicher Bestandteil der Sicherung einer SSH-Verbindung. Es verhindert Man-in-the-Middle-Angriffe .

In der Realität stellen die meisten Administratoren den Fingerabdruck des Hostschlüssels nicht zur Verfügung.

Um die bestmögliche Sicherheit zu erreichen, müssen Sie auf den sichersten Weg eine Verbindung zum Server herstellen. Treffen Sie mögliche Vorkehrungen, um die Sicherheit Ihres lokalen Computers und eine Verbindung zum Server zu gewährleisten. Wenn Sie beispielsweise den Host-Schlüssel benötigen, um die Verbindung zum Server von einem externen Standort (z. B. von zu Hause oder einem Client) aus zu überprüfen, Sie jedoch physischen Zugriff auf den Server-Standort haben, stellen Sie eine Verbindung vom Server-Standort (z. B. Ihrem Arbeitsplatz) her her. .

Sie können auch alle Personen mit physischem Zugriff auf den Server fragen (idealerweise den Administrator). Der Host-Schlüssel ist nur ein und somit für alle Benutzer gleich. Beachten Sie außerdem, dass der Fingerabdruck des Hostschlüssels nur aus einem Teil des öffentlichen Schlüssels des Hostschlüssels generiert wird. Es ist also nicht geheim und kann sicher über unverschlüsselte (aber dennoch vertrauenswürdige) Kommunikationskanäle gesendet werden.

Ein Sonderfall ist das Abrufen des Hostschlüssels eines Servers, den Sie selbst verwalten, Sie haben jedoch keine direkte sichere Verbindung, über die Sie eine Verbindung herstellen können. Dies ist bei virtuellen Servern oder Servern in einer Cloud üblich. In diesem Fall sollte ein Serveranbieter eine spezifische Lösung haben. Zum Beispiel einen spezialisierten Server in demselben privaten Netzwerk wie Ihr Server mit öffentlich bekannten Host-Schlüsseln. Sie können eine Verbindung zu diesem spezialisierten Server herstellen und von diesem aus eine sichere Verbindung zu Ihrem Server herstellen (z. B. mithilfe eines SSH-Terminals). Wenn Sie eine Verbindung innerhalb eines privaten Netzwerks herstellen, können Sie jedem Host-Schlüssel sicher vertrauen. Sobald Sie mit Ihrem Server verbunden sind, fordern Sie den Host-Schlüssel an. Damit können Sie endlich direkt und sicher über ein öffentliches Netzwerk eine Verbindung herstellen. Alternativ kann der Serveranbieter den Hostschlüssel über eine Verwaltungsschnittstelle bereitstellen.

Siehe zum Beispiel meine Anleitungen für: