我们有一台服务器上有一些 git 存储库,我希望能够将其中一个存储库克隆到我们的网络服务器(运行 debian)。我ssh-keygen
在网络服务器上运行并将公钥复制到authorized_keys
git 服务器上,因此现在我可以从网络服务器成功 ssh 到 git 服务器:
ssh -T [email protected]
它会让我登录。但是,如果我在网络服务器上调用 git clone:
sudo git clone [email protected]:/dir/repo.git
我收到这样的回复:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
有人知道为什么会这样吗?我读到我应该ForwardAgent
在本地机器(运行 Max OS X)上允许 /etc/ssh_config,我已经这样做了但没有解决问题。
答案1
你是不是呼叫git clone
;你正在呼叫sudo
切换到完全不同的 Unix 帐户(root)只有那时呼叫git clone
。
结果sudo ssh -v ...
是,正如您在 中注意到的那样,它ssh
在属于 root 而不是您的目录中寻找私钥。由于sudo
默认情况下会清除环境,ssh
因此也无法使用您的 SSH 代理,因为SSH_AUTH_SOCK
环境变量已被删除。
由于您已启用代理转发,请尝试使其保留所有环境变量。sudo -E ssh ...