Где создается / хранится отпечаток пальца сервера SSH?


44

Я установил openssh-сервер и создал ключ с ssh-keygen. Затем я попытался проверить это с помощью локальной переадресации портов, выполнив ssh -L 8080:www.nytimes.com:80 127.0.0.1. Однако отпечаток ключа, который предоставляет эта команда, - это не тот отпечаток ключа, который я получаю, когда делаю ssh-keygen -l. Даже если я удалю свой каталог .ssh, у меня все равно останется тот же отпечаток, который я не создал ssh-keygen. Есть ли другой ключ в моей системе? Где этот ключ? Как я могу выбрать этот ключ для использования openssh-сервером?

Ответы:


59

Когда вы делаете сеанс SSH, задействуются две разные пары ключей (с отпечатком для каждой пары). Одним из них является ключ пользователя, который хранится в ~/.ssh. Идентификатор ключа SSH пользователя иногда используется в качестве учетных данных для входа на другой компьютер (если вы настроили регистрацию на основе ключа).

Другой - это ключ сервера SSH. Это ключ, который вы видите отпечаток пальца при первом подключении к другому серверу. Идентификатор этого ключа используется для того, чтобы убедиться, что вы входите на сервер SSH, на который вы собираетесь. Это важно, если вы используете пароли, потому что вы не захотите случайно попытаться войти на компьютер злоумышленника: злоумышленник получит ваш пароль, когда вы введете его. Затем злоумышленник сможет войти на компьютер, на котором вы входили. к! (это известно как «человек в середине атаки» ) . Ключи, которые SSH-сервер использует для идентификации себя, когда вы входите в него, расположены /etc/ssh/и обычно называются как-то так ssh_host_rsa_key.

Вы можете фактически изменить, где сервер SSH ищет ключ в файле с настройкой./etc/ssh/sshd_configHostKey /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 (новый по умолчанию).


1
Результаты Google по «установлению отпечатка ssh», хотя эти термины технически неверны, на удивление плохи. Хорошо, что я нашел это среди них.
Барт ван Хейкелом

4
Спасибо за это. Одно замечание: «sudo» не требуется, если вы указываете ssh-keygen на открытый ключ. То есть: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub. Также, для моей установки, это был ключ ECDSA, а не ключ RSA, который использовал демон ssh, так что на самом деле мне нужно было запустить ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub.
Джон Клементс

Есть ли проблема с получением открытых ключей от моего старого жесткого диска и использованием их в моей новой установке, с перезаписью их в / etc / ssh? Ключ - это ключ, верно?
Адам

@ Адам, я не вижу проблем с этим. Это должно помочь избежать проблем при удаленном входе в систему и изменении ключа (что происходит, если переустановить новый ключ будет сгенерировано).
Azendale

3
Когда я впервые подключаюсь sshк хосту с 14.04, он показывает отпечаток MD5. Чтобы ssh-keygen16.04 показать отпечаток MD5, необходимо использовать -E md5опцию.
Ярно

15

В нем хранятся ключи хоста SSH /etc/ssh/, которые обычно не нужно выбирать. Эти ключи были сгенерированы при установке пакета openssh-server.

Вы можете перечислить отпечаток ключа, ssh-keygen -l -f /etc/ssh/ssh_host_key.pubхотя вам нужно будет повторить это для каждого открытого ключа.

 


7

ssh-keygenне генерирует отпечаток SSH на вашем сервере. Это генерируется сервером SSH. ssh-keygenсоздает пару открытый / закрытый ключ для вашей системы, которую вы позже сможете использовать для доступа к вашему SSH-серверу без необходимости передавать пароль в виде простого текста на сервер.

Отпечаток вашего сервера, очевидно, не будет отображаться как отпечаток созданной вами пары открытого / закрытого ключа, так как они отделены друг от друга.


3
Обратите внимание, что вы должны иметь возможность генерировать ключи ssh для своего сервера (вопреки тому, что вы говорите), но вам просто нужно поместить их в нужное место, чтобы они использовались для этой цели.
Азендейл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.