SFTP основан на SSH; хосты, к которым вы подключаетесь, как и с ssh, предоставят вам уникальный ключ, который позволит вам их идентифицировать. Если вы примете ключ, в любое время в будущем, когда вы подключитесь к тому же хосту, предоставленный ключ будет проверен по сравнению с ключом, предоставленным в первый раз (который хранится в $ HOME/.ssh/known-hosts), и если два совпадения вас больше не спросят; если два ключа не совпадают, вы будете предупреждены о возможной атаке (атака «Человек посередине», MTIM).
Так что это в основном функция безопасности. SSH основан на TOFU (доверие при первом использовании). Это означает, что вам нужно будет принять ключ после проверки у системного администратора, что представленный ключ действительно принадлежит им, и затем приступить к установлению связи.
РЕДАКТИРОВАТЬ:
Как проверить, что нам предоставляется правильный ключ, если не считать, что (возможно, несуществующий) системный администратор? Когда вы подключаетесь к серверу SSH/SFTP в первый раз, вам предоставляется что-то вроде следующего:
$ 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)?
Запишите вид отпечатка пальца (ECDSA, выше) и сам отпечаток пальца, b2:2d:52:1a:40:c2:f9:ca:9a:42:86:76:f4:0b:eb:84
выше. Теперь перейдите на сервер (физически или, в случае VPS, на консоль), и, без необходимости sudo su
, перейдите в /etc /ssh. Вы увидите, что существует много файлов .pub
; Одним из них является ssh_host_ecdsa_key.pub (тип отпечатка пальца, который мы представили). Теперь выполните эту команду:
$ ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
Его вывод должен соответствовать отпечатку пальца, который вы предлагали выше. Если это так, вы можете теперь принять отпечаток ключа в сеансе ssh и перейти на ssh на сервер.
Нет необходимости импортировать что-либо с сервера: ssh позаботится об этом за вас.