需要使用 sudo 和 ssh

需要使用 sudo 和 ssh

我正在尝试以用户 flc 身份运行以下命令:

sudo hg clone git+ssh://[电子邮件保护]:flc/myproject.git /opt/flc/projects/myproject

但是,我收到了这个错误:

权限被拒绝(公钥)。

我知道我在 /home/flc/.ssh 中有密钥,如果我运行下面的命令它就可以工作(注意没有 sudo,但写入 /tmp 所以不需要 sudo)

hg 克隆 git+ssh://[电子邮件保护]:flc/myproject.git /tmp/flc/projects/myproject

我需要 sudo 以便它可以写入 /opt/flc/projects/myproject

所以我的问题是,我如何使用 sudo 并让它找到 /home/flc/.ssh 中的 .ssh 密钥并从而工作?

答案1

您需要为 root 用户部署密钥,而不是为您的用户部署密钥。当您执行 sudo 时,命令将在 root 用户下执行,而不是您的用户。

另外,你也许应该重新考虑如何做。在我看来,这不是以 sudo 身份拉取的正确方法。

答案2

如果使用 sudo,则意味着超级用户(即 root)将启动该命令。

因此,如果您需要使用超级用户(这并不真正推荐),您需要为超级用户重新创建一些密钥:sudo ssh-keygen -t rsa我认为这可以解决问题。

或者,可能只需要复制根文件夹中的 /home/flc/.ssh:

sudo cp -R /home/flc/.ssh /root/

但我确实认为您应该记住,使用超级用户通常不是一个好的解决方案。

答案3

看一眼:https://unix.stackexchange.com/questions/33926/passing-ssh-options-to-git-clone

  • 初始化空存储库并编辑 .git/config
  • 在 /root/.ssh/config 中定义该主机的密钥位置

答案4

hg您可以使用目录权限并在中添加具有写权限的组中使用的用户/opt/flc/projects/myproject

相关内容