Страницы

Поиск по вопросам

пятница, 16 ноября 2018 г.

Почему не работает git clone при подключении к репозиторию по putty?

Сервер с centos подключается к репозиторию bitbucket по ssh-rsa ключам. Если это делать непосредственно под root'ом на этой машине, то git clone проходит успешно. Если подключиться к машине по putty и попробовать склонировать репозиторий под рутом, появляется сообщение об отказе в правах. Почему так происходит? Как сгенерировать ключи, по которым можно будет работать с гитом под putty?
Permission denied (publickey). fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.


Ответ

ни в коем случае не надо «работать под root-ом». подключаетесь к машине вы, надеюсь, под именем «рядового» пользователя, вот от его имени и надо работать, получая root-овые привилегии лишь для выполнения административных задач. git clone и тому подобные команды оперируют приватным ключом (в вашем случае — из файла id_rsa), хранящимся в каталоге .ssh/ в домашнем каталоге пользователя, от имени которого выполняется команда. для пользователя root это обычно каталог /root/.ssh/. для «рядового» пользователя это обычно /home/пользователь/.ssh/ вам надо скопировать файл (в вашем случае /root/.ssh/id_rsa) в каталог «рядового» пользователя /home/пользователь/.ssh/. если такого каталога нет, создайте его (от имени пользователя). если каталог уже существует, эта команда не сделают ничего:
$ mkdir -p ~/.ssh
если такой каталог уже существовал и в нём уже были файлы id_rsa и id_rsa.pub, на всякий случай переименуйте их (вдруг они нужны для доступа куда-нибудь ещё):
$ mv ~/.ssh/id_rsa{,.backup}; mv ~/.ssh/id_rsa.pub{,.backup}
теперь копируем файлы и изменяем их владельца (операция осуществляется от имени root-а, ведь у «рядовых» пользователей нет доступа к его домашнему каталогу):
# cp /root/.ssh/id_rsa{,.pub} /home/пользователь/.ssh/ # chown -R пользователь /home/пользователь/.ssh/
дальше (уже от имени пользователя) сто́ит [пере]установить права на каталог и его содержимое:
$ chmod -R u+w,go= ~/.ssh если проделанные операции не помогли, и при выполнении git clone от имени пользователя (при подключении с помощью putty) возникает та же самая ошибка, в первую очередь проверьте значение переменной окружения HOME
$ echo $HOME
она должна содержать домашний каталог пользователя (обычно: /home/пользователь). именно на значение этой переменной и «опираются» программы (тот же git) при поиске файлов: если в этой переменной хранится что-то отличное от домашнего каталога, то, например, каталог .ssh (и файлы в нём) будут разыскиваться совсем не там, где следует.
дополнение по поводу использования нестандартного имени (или местоположения) файла с секретным ключом.
например, файл с секретным ключом называется ~/.ssh/id_rsa.vtoroj. тогда для использования именно этого ключа при подключении к серверу bitbucket.org можно добавить в конец файла ~/.ssh/config такие строки:
host bitbucket.org identityfile ~/.ssh/id_rsa.vtoroj

Комментариев нет:

Отправить комментарий