我正在尝试以用户 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
。