4

Я переключился с FTP с TLS на SFTP, и теперь при попытке подключения появляется диалоговое окно с сообщением Unknown Host Key для www.example.com. Затем представлены два варианта: Запретить и Разрешить.

Что это значит? Должен ли я выбрать Разрешить или Запретить?

2 ответа2

8

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 позаботится об этом за вас.

1

Это отредактированная версия моего руководства. Где я могу получить отпечаток ключа хоста SSH для авторизации сервера?


Вы должны получить отпечаток ключа хоста SSH вместе с вашими учетными данными от администратора сервера. Знание отпечатка ключа хоста и, следовательно, возможность его проверки является неотъемлемой частью защиты соединения SSH. Это предотвращает атаки "человек посередине".

В реальном мире большинство администраторов не предоставляют отпечаток ключа хоста.

Если вы хотите добиться максимальной безопасности, вам необходимо подключиться к серверу наиболее безопасным способом. Примите все возможные меры предосторожности для обеспечения безопасности вашего локального компьютера и подключения к серверу. Например, если вам нужно получить ключ хоста для проверки соединения с сервером с внешнего сайта (например, из дома или с клиента), но у вас есть физический доступ к сайту сервера, подключитесь с сайта сервера (например, с вашего рабочего места),

Вы также можете спросить любого, кто имеет физический доступ к серверу (в идеале администратор). Ключ хоста только один и, следовательно, одинаков для всех пользователей. Также обратите внимание, что отпечаток ключа хоста генерируется только из части открытого ключа ключа хоста. Так что это не секрет, и его можно безопасно отправлять по незашифрованным (но надежным) каналам связи.

Особый случай - получение ключа хоста сервера, который вы сами являетесь администратором, но у вас нет прямой защищенной линии для подключения. Это характерно для виртуальных серверов или серверов в облаке. В таком случае у поставщика сервера должно быть конкретное решение. Например, специализированный сервер в той же частной сети, что и ваш сервер, с общеизвестными ключами хоста. Вы можете подключиться к этому специализированному серверу и с него безопасно подключиться к вашему серверу (например, используя терминал SSH). Поскольку вы подключаетесь в частной сети, вы можете безопасно доверять любому ключу хоста. Подключившись к вашему серверу, получите его ключ хоста. С этим вы, наконец, можете подключиться напрямую, но безопасно через общедоступную сеть. В качестве альтернативы поставщик сервера может предоставить ключ хоста через некоторый административный интерфейс.

Например, смотрите мои руководства для:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .