无法克隆存储库:git@gitlab.com:Permission denied(publickey,keyboard-interactive)

p5fdfcr1  于 2023-05-21  发布在  Git
关注(0)|答案(3)|浏览(291)

我已经尝试了任何我能想到的,并找到网上这一点,让它的工作,但没有我尝试过的工程。
我正在使用Windows 10。我已经在GitLab上有了一个仓库,并分配了一个SSH密钥。我只想克隆/推/拉正常的东西。
当我做ssh -Tv git@gitlab.com时,我得到; Welcome to GitLab, @user!
但是当我尝试使用git clone git@gitlab.com:user/my-repo.git克隆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.

这是我在.ssh中的配置,看到一些人通过这样做来解决他们的问题。

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

我还尝试在vsc上使用GitLab Personal令牌和GitLab工作流,当我使用Git Clone > Clone from GitLab > user/my-repo下的菜单时,我可以看到仓库。我还可以在vsc上使用GitLab工作流打开远程仓库,我可以看到我的代码。当尝试使用git clone https://gitlab.com/user/my-repo.git克隆存储库时,我得到;

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和ed 25519,我已经删除并添加了一个新的个人令牌,但没有任何效果。
有人有同样的问题吗?你是怎么解决的我见过

  • 我已将我的用户名和存储库名称替换为usermy-repo。*
mnemlml8

mnemlml81#

如果使用ssh -Tv git@gitlab.com可以工作,但使用git clone ssh://git@gitlab.com:foo/bar.git不能,这可能是由于git没有使用相同的ssh程序,因此,当git调用ssh时,它会在不同的位置查找您的密钥。
这是在Windows上使用git for Windows时常见的错误配置。
一种解决方法是设置GIT_SSH环境变量指向正确的ssh二进制文件的位置,或者设置PATH变量,以便正确解析ssh的正确版本。
有时,您安装的其他程序可能会将不同版本的gitssh放置在系统的PATH中。这可能会干扰git的工作方式。要了解您当前使用的是哪些,请运行以下命令:

where git
where ssh

在Windows 10用户的 * 大多数 * 情况下,where git应解析为C:\Program Files\Git\cmd\git.exewhere ssh应解析为C:\Windows\System32\OpenSSH\ssh.exe
如果where ssh命令未解析为C:\Windows\System32\OpenSSH\ssh.exe(如果有多个结果,则必须是第一个),并且您的GIT_SSH环境变量未设置(或设置为其他位置),请使用以下命令进行修复:

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

(in在某些其他情况下,这可能会解决您的问题,即使where ssh似乎是正确的)
如果您的where git命令解析为C:\Program Files\Git\cmd\git.exe以外的内容(如果列出了多个,则应该是第一个),则需要从PATH环境变量中删 debugging 误条目。(最简单的方法是从开始菜单中搜索“环境变量”,并使用GUI编辑USER或SYSTEM PATH环境变量)。另外,请确保您已经使用官方64位安装程序安装了git。
最后,确保Windows OpenSSH身份验证代理服务正在运行。打开“服务”,然后找到“Windows OpenSSH身份验证代理”,并确保服务正在运行。还要确保SSH配置和密钥位于C:\Users\yourusername\.ssh
在所有这些步骤之间,您应该能够确保git很好地使用ssh。
另一种方法是使用“Git Bash”启动git,它将自包含自己的gitssh二进制文件,并自动使用用户配置文件主目录中的.ssh目录,这应该可以避免系统上的任何其他环境问题。但是,这可能不太方便,因为您必须在任何时候打开git bash才能使用git,而您的IDE或其他程序可能不会自动使用Git Bash。
其他参考文献:
Git with SSH on Windows
How to run ssh-add on windows?

bxgwgixi

bxgwgixi2#

ssh仍然是坏的,但我发现了一种方法来获得我的repos使用个人令牌,当它要求你输入用户名和密码输入令牌,而不是密码。

deyfvvtc

deyfvvtc3#

我遇到了这个问题,但ssh -Tv git@gitlab.com显示它正在寻找特定的~/.ssh/id_*文件,而我的文件名为id_gitlab
改名后,一切都很顺利。

部分输出

debug1: get_agent_identities: ssh_fetch_identitylist: agent contains no identities
debug1: Will attempt key: /Users/clemens/.ssh/id_rsa 
debug1: Will attempt key: /Users/clemens/.ssh/id_ecdsa 
debug1: Will attempt key: /Users/clemens/.ssh/id_ecdsa_sk 
debug1: Will attempt key: /Users/clemens/.ssh/id_ed25519 
debug1: Will attempt key: /Users/clemens/.ssh/id_ed25519_sk 
debug1: Will attempt key: /Users/clemens/.ssh/id_xmss 
debug1: Will attempt key: /Users/clemens/.ssh/id_dsa

相关问题