SFTP opiera się na SSH; hosty, z którymi się łączysz, tak jak w przypadku ssh, zapewnią Ci unikalny klucz, który pozwoli Ci je zidentyfikować. Jeśli zaakceptujesz klucz, w dowolnym momencie w przyszłości połączysz się z tym samym hostem, pod warunkiem, że klucz zostanie sprawdzony w stosunku do tego podanego za pierwszym razem (który jest przechowywany w $ HOME / .ssh / known-hosts) i jeśli dwa pasują nie zostaniesz ponownie zapytany; jeśli zamiast dwóch kluczy nie pasują, zostaniesz ostrzeżony o możliwym ataku (atak Man In The Middle, MTIM).
Jest to więc zasadniczo zabezpieczenie. SSH opiera się na TOFU (Trust On First Use). Oznacza to, że będziesz musiał zaakceptować klucz po sprawdzeniu przez administratora systemu, czy przedstawiony klucz jest rzeczywiście ich kluczem, a następnie przystąpić do nawiązania komunikacji.
EDYTOWAĆ:
Jak sprawdzić, czy prezentowany jest właściwy klucz, poza pytaniem (prawdopodobnie nieistniejącego) administratora systemu? Po pierwszym połączeniu z serwerem SSH / SFTP pojawia się coś takiego:
$ 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)?
Zapisz rodzaj odcisku palca (ECDSA, powyżej) i sam odcisk palca, b2:2d:52:1a:40:c2:f9:ca:9a:42:86:76:f4:0b:eb:84
powyżej. Teraz przejdź do serwera (fizycznie lub, w przypadku VPS, do konsoli) i bez konieczności sudo su
, idź do / etc / ssh. Zobaczysz, że jest ich wiele .pub
pliki; jeden to ssh_host_ecdsa_key.pub (typ odcisku palca, który został nam przedstawiony). Teraz wydaj to polecenie:
$ ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
Jego wyjście musi dopasuj odcisk palca, który zaoferowano powyżej. Jeśli tak, możesz teraz zaakceptować odcisk palca klucza w sesji ssh i przejść do ssh na serwer.
Nie ma potrzeby importowania czegokolwiek z serwera: ssh zajmie się tym za Ciebie.