LINUX.ORG.RU
ФорумAdmin

ssh авторизация по ключу - странный БАГ

 ,


0

1

Нашел странный баг, когда запускаю ssh клиент с авторизацией по ключу, и при этом в папке .ssh есть одноименный публичный ключ, но с другим отпечатком, то авторизация не проходит .

Решение, чтоб НЕ БЫЛО одноименного публичного ключа с другим отпечатком.


Вот как воспроизвести

- генерим пару fwd, fwd.pub
- генерим пару fwd2, fwd2.pub
- устанавливаем fwd.pub на удаленную сторону в authorized_keys
- rm fwd2
- mv fwd2.pub fwd.pub
- Теперь fwd и fwd.pub с разным отпечатком, иии...
- ssh -i fwd u@h => облом
- РЕШЕНИЕ: rm fwd.pub
- ssh -i fwd u@h => успех

Как объяснить? Просто интересно.

★★★★★

Какой же это баг? Клиент предлагает удаленной системе публичный ключ, который должен быть подписан в сертификате, либо добавлен в удаленный authorized_keys. Сервер должен одобрить этот ключ.

Oleg_Iu ()

Видимо, клиент на этапе аутентификации предполагает, что одноименный публичный ключ соответствует приватному, и не генерирует публичный ключ из приватного, а берет готовый.

anonymous ()
Ответ на: комментарий от pfg

ssh берет ключ из соответствующего *.pub. зачем ему выковыривать его из приватного ключа ??

А как он будет шифровать соединение? :)

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

В вашем варианте он находит его в файле рядом - а там другой ключ. Вот и приехали…

Oleg_Iu ()
Ответ на: комментарий от anonymous

Немножко не так, клиент берет готовый пуб и шлет его отпечаток серверу, и получает немедленный отлуп.

В случае подписанного публичного ключа, на сервере нет вообще никакого ключа. Хотя там запрос немного по другому формируется.

PS Ну да, я не обратил внимание, что ТС подменил публичный ключ.

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

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

anonymous ()