在 GitLab 中使用 SSH 进行 Git 克隆不起作用
Posted
技术标签:
【中文标题】在 GitLab 中使用 SSH 进行 Git 克隆不起作用【英文标题】:Git clone with SSH in GitLab doesn't work 【发布时间】:2021-12-09 16:03:12 【问题描述】:我在我的 GitLab 配置文件设置中设置了我的公共 SSH RSA 密钥。在我的远程服务器上,我已经添加了我的 SSH 私钥:
ssh-add ~/.ssh/id_rsa
事实上,当我在远程服务器上运行 SSH 连接验证时,它已通过身份验证:
user@some-remote-server:/var/www$ ssh -T git@gitlab.com
The authenticity of host 'gitlab.com (xxx.xx.xxx.xx)' can't be established.
ECDSA key fingerprint is SHA256:anmsdaskdnaslkdmaskd.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitlab.com,xxx.xx.xxx.xx' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/user/.ssh/id_rsa':
Welcome to GitLab, @alramdein!
user@some-remote-server:/var/www$
我是存储库的所有者。但是当我运行 Git clone 时,它说fatal: Could not read from remote repository.
user@some-remote-server:/var/www$ sudo git clone git@gitlab.com:repo/repo.git
Cloning into 'repo'...
git@gitlab.com: Permission denied (publickey,keyboard-interactive).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
user@some-remote-server:/var/www$
【问题讨论】:
【参考方案1】:您正在使用sudo git clone
;这意味着您使用的 ssh-agent
与您的用户不同。
如果你想检查,你可以执行
ssh-add -L
和
sudo ssh-add -L
您会看到两个帐户中没有相同的代理。
我不知道你为什么要用sudo
权限做git clone
,但是你需要用sudo
启动你的代理(对于root
用户)并将私钥附加到它。
另外,由于sudo
禁用环境变量,因此每次使用ssh
时都必须提供SSH_AUTH_SOCK
和SSH_AGENT_PID
。
【讨论】:
我的 VPS 提供商不允许我使用 root 用户。所以我最终将目录的所有者更改为我的用户。我实际上比这更早找到了答案,但谢谢。 寻求详细解决方案的可以在这里找到mhagemann.medium.com/…以上是关于在 GitLab 中使用 SSH 进行 Git 克隆不起作用的主要内容,如果未能解决你的问题,请参考以下文章