Должен ли я разрешить неизвестный ключ хоста при использовании SFTP?
Я переключился с FTP с TLS на SFTP, и теперь при попытке подключения появляется диалоговое окно с неизвестным ключом хоста для www.example.com. Затем представлены два варианта: Запретить и Разрешить.
Что это значит? Должен ли я выбрать Разрешить или Запретить?
2 ответа
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 позаботится об этом за вас.
Это отредактированная версия моего руководства. Где я могу получить отпечаток ключа хоста SSH для авторизации сервера?
Вы должны получить отпечаток ключа хоста SSH вместе с вашими учетными данными от администратора сервера. Знание отпечатка ключа хоста и, следовательно, возможность его проверки является неотъемлемой частью защиты соединения SSH. Это предотвращает атаки "человек посередине".
В реальном мире большинство администраторов не предоставляют отпечаток ключа хоста.
Если вы хотите добиться максимальной безопасности, вам необходимо подключиться к серверу наиболее безопасным способом. Примите все возможные меры предосторожности для обеспечения безопасности вашего локального компьютера и соединения с сервером. Например, если вам нужно получить ключ хоста для проверки соединения с сервером с внешнего сайта (например, из дома или с клиента), но у вас есть физический доступ к сайту сервера, подключитесь с сайта сервера (например, с вашего рабочего места),
Вы также можете попросить любого, кто имеет физический доступ к серверу (в идеале администратора). Ключ хоста только один и, следовательно, одинаков для всех пользователей. Также обратите внимание, что отпечаток ключа хоста генерируется только из части открытого ключа ключа хоста. Так что это не секрет, и его можно безопасно отправлять по незашифрованным (но надежным) каналам связи.
Особый случай - получение ключа хоста сервера, который вы сами являетесь администратором, но у вас нет прямой защищенной линии для подключения. Это характерно для виртуальных серверов или серверов в облаке. В таком случае у поставщика сервера должно быть определенное решение. Например, специализированный сервер в той же частной сети, что и ваш сервер, с общеизвестными ключами хоста. Вы можете подключиться к этому специализированному серверу и с него безопасно подключиться к вашему серверу (например, используя терминал SSH). Поскольку вы подключаетесь в частной сети, вы можете безопасно доверять любому ключу хоста. Подключившись к вашему серверу, получите его хост-ключ. С этим вы, наконец, можете подключиться напрямую, но безопасно через общедоступную сеть. В качестве альтернативы поставщик сервера может предоставить ключ хоста через некоторый административный интерфейс.
Например, смотрите мои руководства для: