Сообщение, которое вы видите, является отдельной проблемой. Он просит вас подтвердить, что хост, к которому вы подключаетесь, действительно тот, на который вы рассчитываете. С сервера вы можете получить отпечаток пальца, запустив его ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
. Затем, когда вы впервые подключаетесь удаленно, вы можете убедиться, что отпечатки пальцев совпадают.
Ключи хоста, рассматриваемые здесь в действии, решают проблему человека в середине атаки - возможно, DNS был подорван, и вы подключаетесь к компьютеру конкурента, а не к своему. Эта машина собирает ваши учетные данные и прозрачно перенаправляет ваше соединение с реальным сервером, крадет вашу информацию без вашего ведома. Обеспечение совпадения ключа хоста предотвращает это, если злоумышленник фактически не украл открытый ключ вашего сервера.
Однако проблема остается: как узнать, какой ключ правильный? После первого подключения открытый ключ сохраняется в вашем ~/.ssh/known_hosts
файле, поэтому последующие подключения в порядке. Но в первый раз вам либо нужен какой-то внеполосный способ получения отпечатка пальца, либо вы следуете модели «TOFU»: доверие при первом использовании.
Но ни одно из этого не имеет ничего общего с паролями против ключей, за исключением того, что с помощью этой атаки могут быть украдены и ключи, и пароли - в некотором смысле, это уязвимость, о которой вы просите.
Есть (как минимум) три причины, по которым пароли хуже ключей:
- Они могут быть грубы. Типичный выбранный пользователем 8-значный пароль имеет около 30 битов угадывания-энтропии. Пара открытых / закрытых ключей ssh составляет 1024 бита или больше. Фактически невозможно просто перебрать ssh-ключ, но автоматическое подбора пароля происходит постоянно.
- Они могут быть глупыми. Пользователи обычно выбирают ужасные пароли, даже с установленными ограничениями, и они, как правило, используют более сложные пароли в нескольких местах. Это, очевидно, облегчает атаки.
- Пароли могут быть украдены удаленно. Когда вы используете SSH, пароль шифруется на проводе, но очень часто сервер ssh заменяется на скомпрометированных системах тем, который регистрирует все пароли. С ключами закрытый ключ остается в локальной системе и никогда не отправляется вообще, поэтому его нельзя украсть без фактического взлома клиентского компьютера.
Кроме того, ssh-ключи удобны при использовании с чем-то вроде: ssh-agent
вы получаете беспроблемную операцию подключения без повторной аутентификации каждый раз, при этом сохраняя разумную степень безопасности.
Нет особого преимущества в том, чтобы спрашивать и то и другое, поскольку тот, у кого достаточно доступа для кражи закрытого ключа, может довольно легко украсть пароль пользователя. Если вам нужно больше безопасности, чем это, рассмотрите возможность использования системы двухфакторной аутентификации, такой как RSA SecurID или WiKID .
то, что вы на самом деле спрашиваете, «это один фактор лучше, чем другой», тема многофакторной проверки подлинности, и вам действительно стоит заглянуть в эту тему.
Как правило, «фактор» - это то, что вы знаете (пароль), что-то, что у вас есть (файл ssh или карточка с ключом) или что-то, чем вы являетесь (отпечаток пальца).
Один не лучше, чем сам по себе, они бесплатны. Потеря компакт-диска с ключевым файлом так же плоха, как разглашение вашего пароля, если это все, что вам нужно. Для защищенной среды обычно используется двухфакторная аутентификация.
источник