LINUX.ORG.RU
ФорумAdmin

Авторизация обычного пользователя по ключу ssh

 


0

2

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

Есть удаленный сервер, на нем root и один пользователь, допустим faruser. На клиентской машине все действия от пользователя, допустим localuser.

Создан ключ id_rsa и соответствующий ему открытый ключ. На локальной машине они лежат в директории /home/localuser/.ssh

На сервере эти публичные ключи лежат в директории /root/.ssh и /home/faruser/.ssh

И в той и в другой директории также созданы файлы authorized_key и в них залиты id_rsa.pub

В /etc/ssh/sshd_config запрещена аутентификация по паролю, только по ключу.

Теперь в чем суть вопроса:

Когда заходим из-под обычного локального пользователя localuser root'ом удаленного сервера, т. е. выполняем от localuser на клиентской машине

ssh root@1.2.3.4
все проходит замечательно, запрашивается парольная фраза на ключ id_rsa и после ее ввода я сразу оказываюсь на сервере.

А вот при попытке войти пользователем faruser (с клиентской машины из-под localuser, разумеется), пароль на ключевую фразу не запрашивается, сразу выдает

Permission denied (public key)
Вопрос - почему аутентификация по ключу успешно проходит для удаленного root'а, но не проходит для удаленного faruser?

Особой конфигурации для этого хоста нет? Сравнение выводов подключения с ключами -vvv ни на что не наталкивает?

t184256 ★★★★★
()

Ну если под рутом заходит, а фарюзером нет, то нет в авторизед кейс юзера соответствующей записи ??

Бекапим

cp /home/faruser/.ssh/authorized_key /home/faruser/.ssh/authorized_key.bak

Копируем

sudo cat /root/.ssh/authorized_key >> /home/faruser/.ssh/authorized_key

Заходим

ssh faruser@1.2.3.4

SANyaSmol
()

посмотреть логи ssh на удаленной машине. скорей всего не находит файл с открытыми ключами authorized_keys для пользователя faruser
либо права на каталог ~faruser/.ssh или на файл ~faruser/.ssh/authorized_keys поставлены неправильные - ssh за этим следит.

pfg ★★★★★
()

1, Смотреть логи, там все написано. 2. Чаще всего пермишенсы на авторизед_кейс.

Oleg_Iu
()

Удваиваю за пермишены. Сам $HOME/.ssh и все что внутри должен принадлежать пользователю. .ssh должен иметь права 700, а то что внутри .ssh - 600

adn ★★★★
()
Ответ на: комментарий от dima9kin

Если ты принципиально не хочешь использовать инструмент, решающий проблему правильно, то зачем тогда было создавать эту тему?

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

Это всего лишь инструмент автоматизации, прежде чем им пользоваться, стоит разобраться как в принципе все устроено «под капотом», нет?

dima9kin
() автор топика
Ответ на: комментарий от dima9kin

Вот и я о том же. Берёшь и разбираешься, а не спрашиваешь вопросы, на которые в гугле тысячи раз уже ответили. Что мешает посмотреть код этого инструмента?

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

Мешает посмотреть код то, что он (90% вероятности) будет написан на С. А я пишу только на Ассемблере в синтаксисе AT&T, FreePascal и сценарии bash.

Что касается Вашего предложения по поиску в интернете - то всегда сперва именно так и делаю. Но попробуйте найти там именно почему обычный пользователь не может авторизоваться по ключам, в то время как root авторизовывается успешно - и Вы увидете, что подобных тем нет. Ну или я криворукий м..к и не умею искать. Такое тоже допускаю.

Дополнительно скажу, что, например, чтобы авторизовался хотя бы root по ключам - у меня тоже далеко не сразу получилось. Но вот по этому вопросу, действительно, есть масса информации в интернете - и у меня и мысли не возникло тревожить Форум вопросами.

dima9kin
() автор топика
Ответ на: комментарий от dima9kin

Мешает посмотреть код то, что он (90% вероятности) будет написан на С.

Это шелл-скрипт, причём с комментариями.

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

Не пользователь DuckDuckGo? Всё там (в гугле) есть, сам недавно как раз сделал такую же глупость и искал решение. Хотя есть вероятность, что решение нашлось в выводе ssh -vvv, не помню уже.

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

На счет того, что это шелл-скрипт - пардон. Был уверен, что почти все мало-мальски серьезное в Линуксе пишется на С.

Ключ -vvv, я так понимаю, это максимальный verbose? Типа максимум сообщений выдает, так?

dima9kin
() автор топика
Ответ на: комментарий от dima9kin

Был уверен, что почти все мало-мальски серьезное в Линуксе пишется на С.

Это обёртка для ssh. Не в линуксе, кстати, а в OpenBSD. Ну и не сильно зависит серьёзность софта от языка. Сейчас вот всю почти инфру пишут на Go.

Ключ -vvv, я так понимаю, это максимальный verbose?

Да, или почти максимальный. Это можно прочитать в man ssh, как и многие другие интересные и полезные вещи.

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

В общем, действительно, проблема была в разрешениях на директорию .ssh и на файлы в ней.

Причем, что явилось для меня открытием - права должны быть строго 700 и 600 соответственно! Я то был уверен, что они должны быть не менее 700 и 600. Ну, то есть, допустим, вполне допустимы права типа drwxrw-rw или drwxr--r-- на .ssh ну или типа rw-r--r-- на файлы.

А оказалось все строже - ни больше и ни меньше: 700 и 600. Век живи - век учись, а дураком помрешь))

dima9kin
() автор топика
Ответ на: комментарий от dima9kin

Это же самая хранимая и конфиденциальная информация - приватные ключи и авторизованные публичные. Как там может быть read для кого-то кроме самого пользователя.

adn ★★★★
()
Ответ на: комментарий от dima9kin

Главное чтоб прав записи посторонним не было на .ssh и authorized_keys, остальное опционально (возможно зависит от дистрибутива).

Ubuntu 18.04:

drwxr-xr-x 2 jenkins users 4096 Apr 20  2021 /home/jenkins/.ssh
-rw-r--r-- 1 jenkins users  746 Apr 20  2021 /home/jenkins/.ssh/authorized_keys

Вход по ключам замечательно работает.

Как там может быть read для кого-то кроме самого пользователя.

Приватный ключ должен быть только на клиенте. Раз с клиента под root-ом подключается, значит с правами на ключ порядок.
На сервере же должны быть только публичные ключи. А они на то и публичные, что давать их можно кому угодно, т.е. read может быть для всех.

man ssh:

      ~/.ssh/
             ..... There is no general requirement to keep the entire contents of this directory secret .....
spirit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.