我在Windows上使用TortoiseGit。当我尝试从标准Windows资源管理器的上下文菜单克隆时,我收到此错误:
请确保您具有正确的访问权限并且存储库存在
更确切地说,终端的快照如下:
git.exe clone --progress -v“git @ arobotdev:\ git \ AlfaRobot.git”“C:\ Work \ AlfaRobot” 克隆到'C:\ Work \ AlfaRobot'...... 许可被拒绝,请再试一次。 许可被拒绝,请再试一次。 权限被拒绝(公钥,密码)。 致命:无法从远程存储库读取。 请确保您拥有正确的访问权限 并且存储库存在。 git没有干净地退出(退出代码128)(21450 ms @ 19.09.2014 10:36:58)
我该怎么做才能让git正常工作?
您的git网址可能已更改。使用以下命令更改本地目录中的URL
git remote set-url origin git@yourGitUrlHere
git remote set-url origin [email protected]:your-username/your-repo-name.git
eval "$(ssh-agent -s)"
ssh-add
如果您仍然遇到此问题,请检查以确保您没有从github中删除ssh。在从github删除ssh的情况下,您可以将其添加回来。使用pbcopy < ~/.ssh/id_rsa.pub
复制ssh密钥,然后转到github ssh设置并添加它。我会建议你总是使用ssh。对于我曾经使用过的大多数团队,除了使用ssh之外,你无法访问repo(主要是私有的)。对于初学者来说,它可能看起来更难,但后来你会发现它更容易和更安全。
另一个问题可能是您的互联网连接。也许明显,但花了我几分钟才弄明白我的wifi已经下降了:)
像其他答案一样,使用https
而不是ssh
是解决方案。
我发布一个答案,给出一个可能的解决方案的具体例子。当我使用此命令行将远程URL更改为HTTPS时,我用bitbucket解决了这个问题:
git remote set-url origin <bitbucket_URL>
之后,我可以使用以下命令将内容推送到存储库:
git push -u origin --all
然后我也可以使用Sourcetree
奇怪的是,我只在我的许多回购中收到了这个错误。
我的问题是在安装了新的GitHub Desktop for Windows之后,之前的旧GitHub for Win保留了~/.ssh/github_rsa
和~/.ssh/github_rsa.pub
中的密钥,因为新的GitHub for Win期望它在~/.ssh/id_rsa
中,所以解决方案只是重命名现有的私钥和公钥:
~/.ssh/github_rsa -> ~/.ssh/id_rsa
~/.ssh/github_rsa.pub -> ~/.ssh/id_rsa.pub
之后让我再次访问回购没有问题。
如果您通过VPN连接到git存储库,也会发生这种情况。确保已连接到用于访问组织资源的VPN。
使用您的https来源而不是ssh网址
例:
git remote add origin https://gitlab.com/user/folder.git
我有这个问题,我发现我的系统有错误的DNS地址。验证您的网络并进行测试
ssh -vvv [email protected]
并阅读输出消息。如果您看到“您可以使用git或hg连接到Bitbucket”。 , 一切都好。
我正在使用Ubuntu
在阅读了很多答案之后,即使我已经将SSH密钥添加到我的git帐户,并尝试使用ssh -T [email protected]
测试它并且它说Welcome <my username>
,它们都没有解决问题,但它仍然告诉我没有访问权限。然后我发现原因是:
通常,如果你不是root
用户,它将要求你为每个git命令运行sudo
。
在运行sudo git clone <SSH....>
时(例如)。它将在root
权限下执行,但是在创建SSH密钥时我意外地将其作为普通用户运行并且我将密钥保存在~/.ssh/id_rsa
中,它解析了绝对路径/home/username/.ssh/id_rsa
。在做sudo git clone ...
时,它会在/root/.ssh/id_rsa
中查找SSH密钥
为什么我可以肯定这一点。要查看git在哪里查找SSH密钥。运行以下命令:sudo GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone <your repository in SSH>
。它将显示它查找SSH密钥的位置。
所以我建议的解决方案是:
重新创建你的SSH密钥(按照这个instruction),但在第一步运行sudo su
,那么你应该没事。
我在将项目上传到gitlab时遇到了这个错误。我没有从git克隆,而是上传项目。要将代码推送到gitlab,您可以使用ssh或https两种方式。如果您使用https,则必须输入gitlab帐户的用户名和密码。为了将代码推送到git,您可以使用以下代码。
第一次推送到Git
>$ cd
>$ mkdir .ssh;cd .ssh
>$ ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
-C参数是可选的,它在您的键的末尾提供注释,以便在您有多个时将其与其他键区分开。这将创建id_rsa(您的私钥)和id_rsa.pub(您的公钥)。我们传递我们的公钥并保留我们的私钥 - 好吧,私密。 Gitlab的用户设置是您将公钥添加到帐户的地方,让我们最终推送。
在您的项目位置(目录)中使用以下命令
git init
它将当前目录转换为Git存储库。这会将.git子目录添加到当前目录,并可以开始记录项目的修订。
推送使用https路径
git push --set-upstream https://gitlab.com/Account_User_Name/Your_Project_Name.git master
推送使用ssh路径
git push --set-upstream [email protected]:Account_User_Name/Your_project_Name.git master
- set-upstream:告诉git到源的路径。如果Git之前推动了您当前的分支,它将记住原点
master:这是我想在初始化时推送的分支的名称
添加ssh键对我有用。您可以在mac上使用ssh-keygen命令创建ssh密钥。您应该能够在YourRepository> Settings上看到Deploy keys菜单,不要忘记选中Allow write access选项。
这个问题可能与您的ssh-agent有关,您的ssh密钥尚未添加ssh-agent。您必须使用终端应用以下步骤: -
然后它会起作用。
对我来说,这是因为机器上没有SSH密钥。在本地检查SSH密钥:
$ cat ~/.ssh/id_rsa.pub
这是您的SSH密钥。将其添加到存储库中的SSH密钥。 在gitlab中去
配置文件设置 - > SSH密钥
并添加密钥
您正尝试通过ssh:git@arobotdev...
克隆存储库,并且未在服务器上正确设置SSH密钥。这有多种原因:
如果以上所有3都是不真实的,那么我唯一的结论就是尝试:git@arobotdev:AlfaRobot.git
假设AlfaRobot.git在git用户的HOMEDIR中,而不在名为git的文件夹中,该文件夹位于用户git的HOMEDIR中。
rsa.pub(即生成的公钥)需要在github >> settings >> ssh keys页面上添加。检查一下,您尚未在repository-settings >>部署密钥中添加此公钥。如果是这样,请从此处删除条目并添加到提到的第一个位置。
在detail中设置pub-private键。
它会起作用!
这是我如何解决这个问题。我在Win7 / 10上使用Babun(mintty.exe)。当我尝试了上面提到的许多解决方案时,它们都不起作用。我意识到也许我只是使用了错误的ssh代理...所以我运行echo $GIT_SSH
找出来,它显示了Plink.exe
的路径。我实际上期望的是OpenSSH。
所以,我将以下单行添加到~/.zshrc
文件中
注1:您也可以直接在babun中执行它 注意2:如果你使用bash,那么配置文件是
.bashrc
export GIT_SSH=$(which ssh)
它的工作原理!
将这些行添加到您的.get/config
文件中(感谢@kovshenin回答Git Pull: Change Authentication):
[credential]
helper = wincred
尝试https而不是ssh。从项目主页中选择https选项,从中复制克隆URL。