我已经尝试了任何我能想到的,并找到网上这一点,让它的工作,但没有我尝试过的工程。
我正在使用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,我已经删除并添加了一个新的个人令牌,但没有任何效果。
有人有同样的问题吗?你是怎么解决的我见过
- 我已将我的用户名和存储库名称替换为user和my-repo。*
3条答案
按热度按时间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
的正确版本。有时,您安装的其他程序可能会将不同版本的
git
或ssh
放置在系统的PATH中。这可能会干扰git
的工作方式。要了解您当前使用的是哪些,请运行以下命令:在Windows 10用户的 * 大多数 * 情况下,
where git
应解析为C:\Program Files\Git\cmd\git.exe
,where ssh
应解析为C:\Windows\System32\OpenSSH\ssh.exe
如果
where ssh
命令未解析为C:\Windows\System32\OpenSSH\ssh.exe
(如果有多个结果,则必须是第一个),并且您的GIT_SSH
环境变量未设置(或设置为其他位置),请使用以下命令进行修复:(in在某些其他情况下,这可能会解决您的问题,即使
where ssh
似乎是正确的)如果您的
where git
命令解析为C:\Program Files\Git\cmd\git.exe
以外的内容(如果列出了多个,则应该是第一个),则需要从PATH
环境变量中删 debugging 误条目。(最简单的方法是从开始菜单中搜索“环境变量”,并使用GUI编辑USER或SYSTEMPATH
环境变量)。另外,请确保您已经使用官方64位安装程序安装了git。最后,确保Windows OpenSSH身份验证代理服务正在运行。打开“服务”,然后找到“Windows OpenSSH身份验证代理”,并确保服务正在运行。还要确保SSH配置和密钥位于
C:\Users\yourusername\.ssh
下在所有这些步骤之间,您应该能够确保
git
很好地使用ssh。另一种方法是使用“Git Bash”启动git,它将自包含自己的
git
和ssh
二进制文件,并自动使用用户配置文件主目录中的.ssh
目录,这应该可以避免系统上的任何其他环境问题。但是,这可能不太方便,因为您必须在任何时候打开git bash才能使用git,而您的IDE或其他程序可能不会自动使用Git Bash。其他参考文献:
Git with SSH on Windows
How to run ssh-add on windows?
bxgwgixi2#
ssh仍然是坏的,但我发现了一种方法来获得我的repos使用个人令牌,当它要求你输入用户名和密码输入令牌,而不是密码。
deyfvvtc3#
我遇到了这个问题,但
ssh -Tv git@gitlab.com
显示它正在寻找特定的~/.ssh/id_*
文件,而我的文件名为id_gitlab
。改名后,一切都很顺利。
部分输出