Я пытаюсь запустить следующую команду от имени пользователя flc:
sudo hg clone git + ssh: //git@github.com: flc / myproject.git / opt / flc / projects / myproject
Однако я получаю эту ошибку:
В разрешении отказано (публичный ключ).
Я знаю, что у меня есть ключи в /home/flc/.ssh, и он работает, если я запускаю команду ниже (обратите внимание, без sudo, но пишите в / tmp, поэтому sudo не требуется)
hg clone git + ssh: //git@github.com: flc / myproject.git / tmp / flc / projects / myproject
Дело в том, что мне нужно sudo, чтобы он мог писать в / opt / flc / projects / myproject
Итак, мой вопрос в том, как я могу использовать sudo и при этом заставить его находить ключи .ssh в /home/flc/.ssh и, следовательно, работать?
Вам необходимо развернуть ключ для root, а не для вашего пользователя. Когда вы выполняете sudo, команда выполняется под пользователем root, а не вашим.
Также вам, возможно, стоит пересмотреть то, как вы это делаете. IMO это не правильный способ тянуть как sudo.
Если вы используете sudo, это означает, что суперпользователь (то есть root) запустит команду.
Поэтому, если вам необходимо использовать суперпользователя (что на самом деле не рекомендуется), вам нужно либо воссоздать некоторые ключи для суперпользователя: sudo ssh-keygen -t rsa
я думаю, это поможет.
Или может просто нужно скопировать /home/flc/.ssh в корневую папку:
sudo cp -R /home/flc/.ssh /root/
Но я действительно думаю, что вы должны иметь в виду, что использование суперпользователя в целом не является хорошим решением.
Взгляни на: https://unix.stackexchange.com/questions/33926/passing-ssh-options-to-git-clone
Вы можете использовать разрешения каталога и добавить пользователя, используемого hg
в группе с разрешением на запись в /opt/flc/projects/myproject
.