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 su
nach / etc / ssh. Sie werden sehen, dass es viele .pub
Dateien 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.