在 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_SOCKSSH_AGENT_PID

【讨论】:

我的 VPS 提供商不允许我使用 root 用户。所以我最终将目录的所有者更改为我的用户。我实际上比这更早找到了答案,但谢谢。 寻求详细解决方案的可以在这里找到mhagemann.medium.com/…

以上是关于在 GitLab 中使用 SSH 进行 Git 克隆不起作用的主要内容,如果未能解决你的问题,请参考以下文章

怎么更改gitlab object ssh http 地址

Gitlab - 无法通过 SSH 克隆,但 SSH 可以自己工作

使用vscode远程登录Gitlab

idea 怎么配置git的ssh

git/github/gitlab 使用教程

sourcetree gitlab 配置ssh