
Я установил openssh-server и создал ключ с помощью ssh-keygen
. Затем я попытался протестировать его с помощью локальной переадресации портов, выполнив ssh -L 8080:www.nytimes.com:80 127.0.0.1
. Однако отпечаток ключа, который предоставляет эта команда, не является отпечатком ключа, который я получаю, когда я делаю ssh-keygen -l
. Даже если я удаляю свой каталог .ssh, я все равно получаю тот же отпечаток, который не является тем, который я создал с помощью ssh-keygen
. Есть ли в моей системе другой ключ? Где этот ключ? Как мне выбрать этот ключ для использования openssh-server?
решение1
При создании сеанса SSH задействованы две разные пары ключей (с отпечатком для каждой пары). Одна из них — ключ пользователя, который хранится в ~/.ssh
. Идентификатор ключа SSH пользователя иногда используется в качестве учетных данных для входа на другой компьютер (если вы настроили вход на основе ключа).
Другой — ключ сервера SSH. Это ключ, отпечаток которого вы видите, когда подключаетесь к другому серверу в первый раз. Идентификатор этого ключа используется для того, чтобы убедиться, что вы входите на тот сервер SSH, на который намереваетесь. Это важно, если вы используете пароли, потому что вы не хотите случайно попытаться войти на машину злоумышленников: злоумышленник получит ваш пароль, когда вы его введете. Затем злоумышленник сможет войти на машину, на которую, как вы думали, вы входите! (это известно как«атака человека посередине»)Ключи, которые SSH-сервер использует для своей идентификации при входе в систему, находятся в файле /etc/ssh/
и обычно называются примерно так ssh_host_rsa_key
: .
Фактически вы можете изменить место, где SSH-сервер будет искать ключ в файле с помощью настройки./etc/ssh/sshd_config
HostKey /path/to/host/key
По умолчанию ssh-keygen
будет создан ключ для текущего пользователя, который по умолчанию будет сохранен в ~/.ssh
. Формат ключа пользователя и ключа сервера одинаков; разница в том, где они размещены и есть ли /etc/ssh/sshd_config
директива HostKey
, указывающая на них.При установке пакета openssh-server он автоматически генерирует ключи для использования сервером. Вот откуда взялись ключи с неизвестным отпечатком.Если вы хотите увидеть отпечаток ключа SSH-сервера (RSA*), вы можете запустить ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
.
*Существуют различные алгоритмы шифрования. Каждый из них использует свой ключ. Распространенные — DSA (слабый), RSA (старый по умолчанию) и ECDSA (новый по умолчанию).
решение2
Ключи хоста SSH хранятся в /etc/ssh/
, который вам обычно не нужно выбирать. Эти ключи были сгенерированы при установке пакета openssh-server.
Вы можете составить список отпечатков ключей, ssh-keygen -l -f /etc/ssh/ssh_host_key.pub
хотя вам придется повторить это для каждого открытого ключа.
решение3
ssh-keygen
не генерирует отпечаток SSH на вашем сервере. Он генерируется сервером SSH. ssh-keygen
создает пару открытого/закрытого ключа для вашей системы, которую вы можете использовать позже для доступа к вашему серверу SSH без необходимости передавать серверу простой текстовый пароль.
Отпечаток вашего сервера, очевидно, не будет отображаться как отпечаток сгенерированной вами пары открытого и закрытого ключей, поскольку они отделены друг от друга.