Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: ~/.ssh/known_hosts  (Прочитано 2003 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dim_T89

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
~/.ssh/known_hosts
« : 29 Мая 2022, 21:43:15 »
День добрый!
Имеется удалённый сервер(Ubuntu 20.04.4 LTS) и ноут(Ubuntu 22.04 LTS) c которого произвожу подключение по ssh.

Раньше (случай №1):
При первом подключении, при проверке подлинности берется ключ(отпечаток ключа) с "сервера" с /etc/ssh/ssh_host_ecdsa_key.pub и записывается на "ноут" в ~/.ssh/known_hosts

Теперь (случай №2):
При первом подключении, при проверке подлинности берутся ключи(отпечатки ключей) с "сервера" с /etc/ssh/ssh_host_ed25519_key.pub и /etc/ssh/ssh_host_ecdsa_key.pub и записываются в ~/.ssh/known_hosts

Вопрос: почему теперь записывает два ключа, где файл конфигурации, который задаёт параметры - какие ключи передавать и записывать.
Извиняйте если вопрос тупой, пытаюсь подробно разобраться. В промежутке до возникновения случая№2 скидывал сервер для повторной настройки (закрепление материалов) и обновлял ubuntu на ноуте с 20.04.4 до 22.04)


И вопрос второй. В публичном ключе на сервере в /etc/ssh/ при копировании в ручную(допустим для передачи по почте пользователю с ssh-клиентом) нету информации о сервере (ip имя хоста и наверное что-то еще), как это добавить в ручную.
В то время как при первом заходе на сервер публичный ключ записывается в ~/.ssh/known_hosts уже с информацией о сервере в шифрованом виде
« Последнее редактирование: 01 Июня 2022, 14:35:07 от Dim_T89 »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7147
  • Luck Tales
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #1 : 30 Мая 2022, 00:15:38 »
Вопрос: почему теперь записывает два ключа
Вроде как все ключи должны передаваться, которые есть на сервере в /etc/ssh/*key.pub
(Нажмите, чтобы показать/скрыть)

как это добавить в ручную.
Через пробел после публичного ключа.

уже с информацией о сервере в шифрованом виде
нет. Это публичные ключи сервера. Имя сервера в ключ не шифруется.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Dim_T89

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #2 : 30 Мая 2022, 19:04:40 »
Установил две виртуальные машины "клиент" и "сервер". Произвёл подключение с клиента на сервер. У клиента в директории ~/.ssh/ создался файл known_hosts и записался один ключ в таком виде:
|1|4Bmu9Wx08RvLn2/3wJ/Qb38NiOA=|1ZGtlRVnmSDr8fVXFMpC4U1tECs= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRzhtZM5G5Cd6M2f4Fxes99a3bpKOcLy/pbR8EscRqyz9+1nZP8+4umsVLIt/lzvVgUgg8hbyh+UgQjn/yEfcg=

Если поискать этот ключ на сервере, он будет лежать в директории /etc/ssh/ в файле ssh_host_ecdsa_key.pub и иметь такой вид:
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRzhtZM5G5Cd6M2f4Fxes99a3bpKOcLy/pbR8EscRqyz9+1nZP8+4umsVLIt/lzvVgUgg8hbyh+UgQjn/yEfcg= root@user1-VirtualBox

При сравнении можно увидеть что на клиентской машине в начале дополнительно записалось :
|1|4Bmu9Wx08RvLn2/3wJ/Qb38NiOA=|1ZGtlRVnmSDr8fVXFMpC4U1tECs=

а на сервере в конце дополнительно имеется root@user1-VirtualBox.

Так вот: если в ручную скопировать публичный ключ с сервера и записать его на клиентскую машину в ~/.ssh/known_hosts (или в /etc/ssh/....) работать это не будет.
При подключении ключ будет записан у клиента рядом с тем что мы скопировали.
Вопрос как в ручную добавить  это: |1|4Bmu9Wx08RvLn2/3wJ/Qb38NiOA=|1ZGtlRVnmSDr8fVXFMpC4U1tECs=
И вопрос №2: в предыдущем сообщении я говорил про два ключа в known_hosts. На виртуальных же машинах у меня записался один ключ, как и в ситуации №1 в первом сообщении

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7147
  • Luck Tales
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #3 : 30 Мая 2022, 21:07:28 »
Какую программу используете?


Пользователь добавил сообщение 30 Мая 2022, 21:17:51:
Так вот: если в ручную скопировать публичный ключ с сервера и записать его на клиентскую машину в ~/.ssh/known_hosts (или в /etc/ssh/....) работать это не будет.
Вручную ничего не надо делать. На клиенте создаёте ключ и копируете на сервер
ssh-keygen
ssh-copy-id -i .ssh/id_rsa user@remote_host

Ключи в /etc/ssh вообще не трогайте и никуда не копируйте - они отвечают за проверку подлинности сервера и вам не нужны, как, впрочем и known_hosts тоже.
« Последнее редактирование: 30 Мая 2022, 21:26:59 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Dim_T89

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #4 : 31 Мая 2022, 08:42:36 »
Какую программу используете?
для чего?
Все действия я делаю на linux ubuntu. на сервер ставлю ssh командой sudo apt install ssh, на клиенте ssh-client стоит по умолчанию.

Ключи в /etc/ssh вообще не трогайте и никуда не копируйте - они отвечают за проверку подлинности сервера и вам не нужны, как, впрочем и known_hosts тоже.
Я разбираю именно вопрос проверки подлинности сервера. Допустим администратор сервера создал нового пользователя, задал ему логин и пароль, скопировал публичный ключ и передал его по почте адресату(второму админу или пользователю), пользователь скопировал ключ в know_hosts и зашёл по логину,паролю. Первая передача публичного ключа от сервера должна быть доверенной - я читал про это пару раз и сейчас вот решил разобраться.

С тем чтобы создать ключ на клиенте, скопировать на сервер, убрать доступ по паролю и тд - проблем нету, с этим я разобрался.

Оффлайн Usermaster

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2878
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #5 : 31 Мая 2022, 09:10:40 »
скопировал публичный ключ и передал его по почте адресату

Для того чтобы авторизоваться по ssh на удалённом сервере, мало иметь открытый ключ, надо иметь ещё и закрытый для проверки подлинности ключа.

При этом для успешной авторизации открытый ключ копируется в файл authorized_keys, коммандой которую Вам выше привели, или в ручную (тоже можно).
« Последнее редактирование: 31 Мая 2022, 09:12:38 от Usermaster »
А чего это вы тут делаете, а?

Оффлайн Dim_T89

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #6 : 31 Мая 2022, 09:22:09 »
Для того чтобы авторизоваться по ssh на удалённом сервере, мало иметь открытый ключ, надо иметь ещё и закрытый для проверки подлинности ключа.
Я разбираю именно вопрос проверки подлинности сервера.
Забудьте пожалуйста про вопрос входа на сервер по ключам. Представим у нас есть логин и пароль и мы по ним заходим. Меня интересует вопрос проверки подлинности сервера. Я имею приватный ключ на сервере и публичный ключ, который сохраняется в known_hosts при первом присоединении к серверу.

Оффлайн Usermaster

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2878
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #7 : 31 Мая 2022, 10:55:29 »
Вы про это чтоли?

ssh-keyscan ipadress_servera
В выводе будет содержимое типа:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAHrgiFE8kYAARW2W69oVZa2u27YIjxX4yrMOiRo9OOw
Что соответствует содержимому файла на сервере к которому подключаетесь.

/etc/ssh/ssh_host_ed25519_key.pub

Таким образом проверяется подлинность.
А чего это вы тут делаете, а?

Оффлайн Dim_T89

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #8 : 31 Мая 2022, 11:31:39 »

Вы про это чтоли?

Код: [Выделить]

ssh-keyscan ipadress_servera


В выводе будет содержимое типа:

Код: [Выделить]

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAHrgiFE8kYAARW2W69oVZa2u27YIjxX4yrMOiRo9OOw


Что соответствует содержимому файла на сервере к которому подключаетесь.

/etc/ssh/ssh_host_ed25519_key.pub

Таким образом проверяется подлинность.

Возможно, пока не особо понял как работает то что вы написали. Вечером дома буду проверять на виртуалках.

А так выше писал я:
Установил две виртуальные машины "клиент" и "сервер". Произвёл подключение с клиента на сервер. У клиента в директории ~/.ssh/ создался файл known_hosts и записался один ключ в таком виде:
|1|4Bmu9Wx08RvLn2/3wJ/Qb38NiOA=|1ZGtlRVnmSDr8fVXFMpC4U1tECs= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRzhtZM5G5Cd6M2f4Fxes99a3bpKOcLy/pbR8EscRqyz9+1nZP8+4umsVLIt/lzvVgUgg8hbyh+UgQjn/yEfcg=

Если поискать этот ключ на сервере, он будет лежать в директории /etc/ssh/ в файле ssh_host_ecdsa_key.pub и иметь такой вид:
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRzhtZM5G5Cd6M2f4Fxes99a3bpKOcLy/pbR8EscRqyz9+1nZP8+4umsVLIt/lzvVgUgg8hbyh+UgQjn/yEfcg= root@user1-VirtualBox

При сравнении можно увидеть что на клиентской машине в начале дополнительно записалось :
|1|4Bmu9Wx08RvLn2/3wJ/Qb38NiOA=|1ZGtlRVnmSDr8fVXFMpC4U1tECs=
[/b]
Вот как это добавилось интересует. И можно ли это как-то не в зашифрованном виде описать.

+ была проблема в том, что мне в known_hosts сначало один такой ключ записывало, а после переустановки и обновления ubuntu(не знаю что повлияло) стало писать два ключа в know_hosts

Оффлайн Usermaster

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2878
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #9 : 31 Мая 2022, 12:05:29 »
Насколько я понимаю, эта строка:

|1|4Bmu9Wx08RvLn2/3wJ/Qb38NiOA=|1ZGtlRVnmSDr8fVXFMpC4U1tECs= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRzhtZM5G5Cd6M2f4Fxes99a3bpKOcLy/pbR8EscRqyz9+1nZP8+4umsVLIt/lzvVgUgg8hbyh+UgQjn/yEfcg=
генерируется автоматически после проверки подлинности и состоит из сгенерированных данных ключами от сервера и клиента.
Пока это строка существует, или пока у клиента ничего не изменилось, сервер не будет запрашивать от пользователя проверку подлинности, она будет происходить автоматически. Смените ip адрес на клиенте, получите предупреждение о том что требуется проверка подлинности, что-то не так.

Подключитесь с 10 разных ПК к серверу по ssh, там будет 10 записей о 10 ПК.
А чего это вы тут делаете, а?

Оффлайн Dim_T89

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #10 : 31 Мая 2022, 12:54:24 »
|1|4Bmu9Wx08RvLn2/3wJ/Qb38NiOA=|1ZGtlRVnmSDr8fVXFMpC4U1tECs=

Насколько я понимаю, это хэшированная функция с информацией о сервере.

ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRzhtZM5G5Cd6M2f4Fxes99a3bpKOcLy/pbR8EscRqyz9+1nZP8+4umsVLIt/lzvVgUgg8hbyh+UgQjn/yEfcg=
а это публичный ключ, с сервера.

вот первую часть как-то можно записывать не шифруя. И как-то её расшифровывает ubuntu, допустим когда удаляешь определённый ключ командой ssh-keygen -R ip-addres.

Подключитесь с 10 разных ПК к серверу по ssh, там будет 10 записей о 10 ПК.

у меня после переустановки сервера и обновлении клиентской машины до 22.04 lts почему то стало записываться сразу два ключа в known_hosts.

Оффлайн Usermaster

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2878
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #11 : 31 Мая 2022, 13:11:13 »
а это публичный ключ, с сервера.
Не совсем так, сравните.

Пользователь добавил сообщение 31 Мая 2022, 13:12:55:
стало записываться сразу два ключа

Может у Вас 2 разных типа ключей на клиенте в .ssh.
Например и DSA и RSA, или ещё какой, фиг знает.
« Последнее редактирование: 31 Мая 2022, 13:14:23 от Usermaster »
А чего это вы тут делаете, а?

Оффлайн Dim_T89

  • Автор темы
  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: ~/.ssh/know_hosts
« Ответ #12 : 31 Мая 2022, 13:52:28 »
вот так я понимаю:
через пробел записаны три элемента:
1) хэш от имени сервера - |1|4Bmu9Wx08RvLn2/3wJ/Qb38NiOA=|1ZGtlRVnmSDr8fVXFMpC4U1tECs=
(как записать это в ручную или как это расшифровать???)

2)название используемого алгоритма - ecdsa-sha2-nistp256

3)публичный ключ сервера -  AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRzhtZM5G5Cd6M2f4Fxes99a3bpKOcLy/pbR8EscRqyz9+1nZP8+4umsVLIt/lzvVgUgg8hbyh+UgQjn/yEfcg=

Пользователь добавил сообщение 31 Мая 2022, 15:09:38:
предполагаю что можно записать так:
192.168.1.1 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRzhtZM5G5Cd6M2f4Fxes99a3bpKOcLy/pbR8EscRqyz9+1nZP8+4umsVLIt/lzvVgUgg8hbyh+UgQjn/yEfcg=

где 192.168.1.1 - адрес сервера
вечером проверю отпишусь

Пользователь добавил сообщение 31 Мая 2022, 18:54:51:
192.168.1.1 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRzhtZM5G5Cd6M2f4Fxes99a3bpKOcLy/pbR8EscRqyz9+1nZP8+4umsVLIt/lzvVgUgg8hbyh+UgQjn/yEfcg=

Проверил, такая запись работает. Если сохранить без ip будет предлагать записать ключ.

Пользователь добавил сообщение 31 Мая 2022, 19:02:02:
Dim_T89,
Вы про это чтоли?

Код: [Выделить]

ssh-keyscan ipadress_servera


В выводе будет содержимое типа:

Код: [Выделить]

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAHrgiFE8kYAARW2W69oVZa2u27YIjxX4yrMOiRo9OOw


Что соответствует содержимому файла на сервере к которому подключаетесь.

/etc/ssh/ssh_host_ed25519_key.pub

Таким образом проверяется подлинность.

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

Пользователь добавил сообщение 31 Мая 2022, 19:10:54:
Остался один вопрос. Про два публичных ключа, которые мне записываются в known_hosts. Видимо где-то можно прописать какие ключи и откуда брать. Но где?
« Последнее редактирование: 31 Мая 2022, 19:10:54 от Dim_T89 »

 

Страница сгенерирована за 0.099 секунд. Запросов: 25.