提问者:小点点

无法克隆存储库:git@gitlab.com:权限被拒绝(公钥,键盘交互)


到目前为止,我已经尝试了我能想到的任何东西,并在网上找到了它,但我尝试的任何东西都不起作用。

我使用的是Windows 10。我已经在GitLab上有了一个存储库,并分配了一个SSH密钥。我只想克隆/推/拉普通的东西。

当我做ssh-Tv时git@gitlab.comI get<代码>欢迎来到GitLab,@user

但是当我尝试使用git克隆来克隆repo时git@gitlab.com:用户/我的回购。gitI get;

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.

这是我的配置。宋承宪看到一些人通过这样做解决了他们的问题。

Host gitlab.com 
     User git 
     Hostname gitlab.com 
     IdentityFile ~/.ssh/id_ed25519 
     Preferredauthentications publickey 
     TCPKeepAlive yes 
     IdentitiesOnly yes

我还尝试在vsc上的GitLab工作流中使用GitLab个人令牌,当我使用Git Clone下的菜单时,我可以看到repo

remote: HTTP Basic: Access denied
remote: You must use a personal access token with 'read_repository' or 'write_repository' scope for Git over HTTP.
remote: You can generate one at https://gitlab.com/-/profile/personal_access_tokens
fatal: Authentication failed for 'https://gitlab.com/user/my-repo.git/'

我已经多次重制了ssh密钥rsa和ed25519,我已经删除并添加了一个新的个人令牌。

有人遇到过同样的问题吗?你是怎么解决的?我见过

我已将我的用户名和存储库名称替换为user和my-repo。


共2个答案

匿名用户

如果使用ssh-Tvgit@gitlab.com工作,但使用git clone ssh://git@gitlab.com: foo/bar.git不工作,这可能是因为git没有使用相同的ssh程序,因此,当git调用ssh时,它会在不同的位置显示您的密钥。

这是在Windows上使用git for Windows时常见的错误配置。

一种修复方法是设置GIT\u SSH环境变量以指向正确的SSH二进制文件的位置,或者设置PATH变量以正确解析正确版本的SSH。

有时,您安装的其他程序可能会在系统的路径上放置不同版本的git或ssh。这可能会干扰git的工作方式。要知道您当前正在使用哪些命令,请运行以下命令:

where git
where ssh

在大多数情况下,对于Windows 10用户,其中git应解析为C:\Program Files\git\cmd\git。其中ssh应解析为C:\Windows\System32\OpenSSH\ssh。exe

如果其中ssh命令没有解析到C:\Windows\System32\OpenSSH\ssh.exe(如果有多个结果,它必须是第一个)并且您的GIT_SSH环境变量没有设置(或者设置到其他位置),请使用以下命令进行修复:

setx GIT_SSH C:\Windows\System32\OpenSSH\ssh.exe

(在其他一些情况下,这可能会解决您的问题,即使其中ssh似乎是正确的)

如果您的其中git命令解析为不是C:\Program Files\Git\cmd\git.exe(如果列出多个,它应该是第一个),您将希望从您的PATH环境变量中删除错误条目。(最简单的方法是从开始菜单中搜索“环境变量”,并使用GUI编辑您的USER或SYSTEMPATH环境变量)。还要确保您已经使用官方的64位安装程序安装了git。

最后,确保Windows OpenSSH身份验证代理服务正在运行。打开“服务”,然后找到“Windows OpenSSH身份验证代理”,并确保服务正在运行。还要确保您的SSH配置和密钥位于C:\Users\yourusername\下。ssh

在所有这些步骤之间,您应该能够确保git与ssh配合良好。

所有这一切的替代方法是使用“git Bash”启动git,git Bash将自身包含自己的git和ssh二进制文件,并自动使用您的二进制文件。ssh目录,这应该可以避免系统上的任何其他环境问题。然而,这可能并不方便,因为您需要在任何时候打开git bash,而您的IDE或其他程序可能不会自动使用git bash。

其他参考资料:

Windows上带有SSH的Git

如何在windows上运行ssh add?

匿名用户

SSH仍然是坏的,但我找到了一种使用个人令牌访问我的存储库的方法,当它要求您输入用户名和密码时,请输入令牌而不是密码。