LINUX.ORG.RU

Сохранить ECDSA key fingerprint при переустановке

 , ,


0

1

Доброго времени суток!

При первом подключении к удаленному SSH серверу всегда требуется подтверждение:

The authenticity of host ‘…’ can’t be established. ECDSA key fingerprint is xxxxxxxx. Are you sure you want to continue connecting (yes/no)?

Этот хеш можно получить локально командой

ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub

Я правильно понимаю что если сохранить файлы /etc/ssh/ssh_host_* и после полной переустановки системы восстановить их обратно по старому адресу, fingerprint сохранится и удаленные клиенты смогут и дальше подключаться к серверу без подтверждений? Или не все так просто?

На сервере сейчас Debian wheezy, нужно переустановить 10й начисто, с сохранением аккаунтов и ключей пользователей.

ещё ~/.ssh директории пользователей

Dark_SavanT ★★★★★
()

Я правильно понимаю что если сохранить файлы /etc/ssh/ssh_host_* и после полной переустановки системы восстановить их обратно по старому адресу, fingerprint сохранится и удаленные клиенты смогут и дальше подключаться к серверу без подтверждений?

Да, верно (если оставить вопрос аутентификации за кадром).

с сохранением аккаунтов и ключей пользователей.

Нужно сохранить ключи (приватные) или списки разрешённых ключей (публичных)?

Впрочем, и те, и другие лежат в ~user/.ssh. Забэкапь весь каталог (для каждого пользователя) — не ошибёшься.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Впрочем, и те, и другие лежат в ~user/.ssh

лучше еще посмотреть в sshd_config и убедиться что не заданы кастомные пути для ключей через какой-нибудь AuthorizedKeysFile

slowpony ★★★★★
()
27 марта 2021 г.
Ответ на: комментарий от intelfx

Снова немного некропостинга от меня. Закрываю висящие в воздухе старые дела.

Начальные условия такие: VPS с Debian 7 или 8. Один пользователь авторизуется по ключу, остальные по логину-паролю. У пользователя под именем которого авторизация и идет по ключу - есть 1 строчка в authorized_keys и 1 в known_hosts (я с него для теста куда-то авторизовался после создания, это не критично).

Нужно переустановить сервер начисто (поставить Debian 9 или 10) при этом сохранив все ключи чтобы машины в нескольких разных локациях переподключились сами без человеческого вмешательства. Ошибка будет стоить выезда минимум в 3 локации для того чтобы подтвердить смену ключа сервера вводом yes.

Воспроизвел сейчас аналогичную ситуацию в облаке. Забекапил /etc/ssh целиком (.ssh пользователей не трогал т.к. проверял исключительно авторизацию по паролю). После устновки вместо Debian 9 - 10й версии, вернул с заменой содержимое /etc/ssh (все ключи и конфиг).

Подключаюсь с другого сервера, с которого уже раньше были авторизации на эту машину - все ок, подключается не переспрашивая. В процессе возник следующий вопрос.

Когда машина, с которой происходит подключение, переспрашивает, запрос имеет следующий вид:

ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXX. Are you sure you want to continue connecting (yes/no)?

Но в некоторых ситуациях это

ECDSA key fingerprint is XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX Are you sure you want to continue connecting (yes/no)?

То есть из одного и того же закрытого ключа генерируется разный хеш: ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub ssh-keygen -l -E SHA256 -f /etc/ssh/ssh_host_ecdsa_key.pub От чего это зависит - от клиентской машины, или от SSH сервера?

На старом сервере, который требуется переустановить, набор файлов следующий:

  • moduli
  • ssh_config
  • ssh_host_dsa_key
  • ssh_host_dsa_key.pub
  • ssh_host_ecdsa_key
  • ssh_host_ecdsa_key.pub
  • ssh_host_key
  • ssh_host_key.pub
  • ssh_host_rsa_key
  • ssh_host_rsa_key.pub
  • sshd_config

На новых Debian (в том числе который сейчас переустановил для теста) вместо ssh_host_key.pub и ssh_host_key соответственно ssh_host_ed25519_key.pub и ssh_host_ed25519_key.

Не окажется что после смены версии сервера клиенты начнут запрашивать yes при подключении? Или выбор хеш-функции это чисто клиентская вещь?

Dima_228
() автор топика
Последнее исправление: Dima_228 (всего исправлений: 1)
Ответ на: комментарий от Dima_228

То есть из одного и того же закрытого ключа генерируется разный хеш: ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub ssh-keygen -l -E SHA256 -f /etc/ssh/ssh_host_ecdsa_key.pub От чего это зависит - от клиентской машины, или от SSH сервера?

Зависит от версии клиента — это просто разница в представлении, опция FingerprintHash в конфиге клиента, с версии OpenSSH 6.8 у неё сменился дефолт.

Не окажется что после смены версии сервера клиенты начнут запрашивать yes при подключении? Или выбор хеш-функции это чисто клиентская вещь?

Второе.

TL;DR: ключи самой машины лежат в /etc/ssh/ssh_host_*, разрешённые ключи клиентов лежат в ~user/.ssh/id_* (если иное не было настроено вручную, тогда могут лежать где угодно). Если забэкапить эти две локации, всё должно заработать. Впрочем, для пущей уверенности ещё может иметь смысл забэкапить и восстановить конфиги (лежат там же).

intelfx ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.