Пост, полученный практикой: у одного клиента разработчик не смог подключаться к серверу по SSH через публичный ключ. В начале недели, условно говоря, подключался, в к середине уже не смог. При входе сервер просит пользовательский пароль. Все необходимые настройки на сервере никуда не девались, права выставлены верно, ну в общем, хрен пойми почему. Перебрали все возможные варианты и наконец осенило! Смотрим версию OpenSSH:
ssh -V
На выводе имеем OpenSSH_9.5p1, у разработчика точно такая же версия. Смотрим в релиз-ноты последних версий и находим в одной из них следующее:
This release disables RSA signatures using the SHA-1 hash algorithm by default. This change has been made as the SHA-1 hash algorithm is cryptographically broken, and it is possible to create chosen-prefix hash collisions for <USD$50K
For most users, this change should be invisible and there is no need to replace ssh-rsa keys. OpenSSH has supported RFC8332 RSA/SHA-256/512 signatures since release 7.2 and existing ssh-rsa keys will automatically use the stronger algorithm where possible.
И да, вроде бы, написано, что для большинства пользователей ничего менять не нужно, но именно в тот малый процент у которых что-то не так разработчик и попал. К тому же на сервере стоит древняя Ubuntu 14.04 и видать новая версия клиента SSH с одной стороны не захотела дружить со старой версией с другой. Обновлять или даунгрейдить версии не вариант, поэтому просто читаем релиз-ноту дальше и находим решение. Точнее, их даже два.
1️⃣ В домашней директории пользователя, в папке .ssh создаем файл config, где указываем:
Host testhost
HostName 11.111.11.11
Port 22
user vasya
PubkeyAcceptedKeyTypes +ssh-rsa
Сохраняем и можно подключаться:
ssh testhost
2️⃣ Можно сделать команду на коннект чуть длиннее:
ssh -oHostKeyAlgorithms=-ssh-rsa vasya@11.111.11.11
Выбирайте, кому что больше нравится, как говорится. Понятно дело, что на серверах с новой версией ОС такого вряд ли возникнет, но если вдруг вы испытываете при коннекте к каком-либо серверу проблему того, что требует пароль несмотря на имеющейся публичный ключ, то проверьте на всякий случай версию клиентов и любой из указанных выше способов. Вдруг поможет.