Назад | Перейти на главную страницу

Необходимо использовать sudo с ssh

Я пытаюсь запустить следующую команду от имени пользователя 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

  • инициализировать пустой репозиторий и отредактировать .git / config
  • определите местоположение ключа для этого хоста в /root/.ssh/config

Вы можете использовать разрешения каталога и добавить пользователя, используемого hg в группе с разрешением на запись в /opt/flc/projects/myproject.