我试图以用户flc运行以下comamnd:
sudo hg clone git + ssh://[email protected]:flc / myproject.git / opt / flc / projects / myproject
但是,我收到这个错误:
权限被拒绝(publickey)。
我知道我有/home/flc/.ssh中的键,它运作,如果我运行下面的命令(注意没有sudo,但写入/ tmp所以不需要sudo)
hg clone git + ssh://[email protected]:flc / myproject.git / tmp / flc / projects / myproject
事情是我需要sudo所以它可以写入/ opt / flc / projects / myproject
所以我的问题是我怎样才能使用sudo,并仍然find/ home / flc / .ssh中的.ssh键,因此工作?
您需要将密钥部署为root用户,而不是用户。 当你做sudo命令在root用户下执行,而不是你的。
你也许应该重新考虑你是如何做到的。 国际海事组织这是不正确的方式拉作为sudo。
如果你使用sudo,这意味着超级用户(即root)将启动命令。
所以,如果你需要使用超级用户(这不是真的推荐),你需要为超级用户重新创build一些密钥: sudo ssh-keygen -t rsa会做我想的。
或者,可能只需要复制根文件夹中的/home/flc/.ssh即可:
sudo cp -R /home/flc/.ssh /root/
但我真的认为你应该记住,使用超级用户并不是一个好的解决scheme。
看看: https : //unix.stackexchange.com/questions/33926/passing-ssh-options-to-git-clone
您可以使用目录权限,并在/opt/flc/projects/myproject添加具有写入权限的hg在组中使用的用户。