我在Windows上使用TortoiseGit。当我尝试从标准Windows资源管理器的上下文菜单中克隆时,我收到此错误:
请确保您拥有正确的访问权限并且存储库存在
更准确地说,终端的快照如下:
git.exe clone --progress -v" git @ arobotdev:\ git \ AlfaRobot.git" " C:\工作\ AlfaRobot"
克隆到' C:\ Work \ AlfaRobot' ...
许可被拒绝,请再试一次。
许可被拒绝,请再试一次。
权限被拒绝(公钥,密码) 致命:无法从远程存储库中读取
请确保您拥有正确的访问权限 存储库存在。
git没有干净地退出(退出代码128)(21450 ms @ 19.09.2014 10:36:58)
如何让git正常工作?
答案 0 :(得分:50)
您的git网址可能已更改。使用以下命令更改本地目录中的URL
git remote set-url origin git@yourGitUrlHere
答案 1 :(得分:40)
问题可能在于您的ssh-agent,您的ssh密钥没有添加ssh-agent。您必须使用终端应用以下步骤: -
$ eval" $(ssh-agent -s)"
代理人pid 5867
$ ssh-add
输入/home/you/.ssh/id_rsa的密码:[] 身份补充:/home/you/.ssh/id_rsa(home/you/.ssh/id_rsa)
然后它将起作用..查看J。
答案 2 :(得分:23)
对我来说,这是因为机器上没有SSH密钥。在本地检查SSH密钥:
$ cat ~/.ssh/id_rsa.pub
这是您的SSH密钥。将其添加到存储库中的SSH密钥 在gitlab中转到
个人资料设置 - > SSH密钥
并添加密钥
答案 3 :(得分:19)
答案 4 :(得分:7)
您正尝试通过ssh:git@arobotdev...
克隆存储库,并且未在服务器上正确设置SSH密钥。这有多种原因:
如果以上所有3都是不真实的,那么我唯一的结论就是尝试:
git@arobotdev:AlfaRobot.git
假设AlfaRobot.git在git用户的HOMEDIR中,而不在名为git的文件夹中,该文件夹位于用户git的HOMEDIR中。
答案 5 :(得分:7)
之所以会出现此问题,是因为有时ssh-agent
在重新启动后并不持久。您应该检查ssh-agent
是否已添加密钥:
ssh-add -l -E md5
如果您得到如下输出:
The agent has no identities.
这意味着ssh-agent
丢失了密钥。在这种情况下,您只需要再次添加身份密钥。像这样:
ssh-add ~/.ssh/git_rsa
该错误现在应该消失了!
答案 6 :(得分:5)
需要在github上添加rsa.pub(即生成的公钥)>>设置>> ssh键页面。请检查您是否在存储库设置>>中添加了此公钥。部署密钥。如果是这样,请从此处删除条目并添加到提到的第一个位置。
在detail中设置pub-private键。
它会起作用!
答案 7 :(得分:4)
如果您在共享计算机上,则使用自己的密码或无密码的私钥可能会过大。安全的选项是访问令牌:
$ git clone https://<token>@github.com/<user>/<repo>.git
如果您已经克隆了仓库,则可以修改远程设置:
$ git remote set-url origin https://<token>@github.com/<user>/<repo>.git
$ git pull
Already up to date.
答案 8 :(得分:3)
Github现在使用url方案
git remote set-url origin https://github.com/username/repository.git
答案 9 :(得分:2)
尝试使用https而不是ssh。从项目主页选择https选项,从中复制克隆URL。
答案 10 :(得分:2)
将这些行添加到.get/config
文件中(感谢@kovshenin回答Git Pull: Change Authentication):
[credential]
helper = wincred
答案 11 :(得分:2)
以下是我如何解决这个问题。我在Win7 / 10上使用Babun(mintty.exe)。当我尝试了上面提到的许多解决方案时,它们都不起作用。我意识到也许我只是使用了错误的ssh代理...
所以我运行echo $GIT_SSH
查找,它显示了Plink.exe
的路径。
我实际期望的是OpenSSH。
因此,我将以下单行添加到~/.zshrc
文件
注1:你也可以直接在babun执行它 注意2:如果您使用bash,则配置文件为
.bashrc
export GIT_SSH=$(which ssh)
它有效!
答案 12 :(得分:1)
您可能要确认的第一件事是互联网连接。不过,互联网问题通常会说无法访问该存储库。
确保已在本地和github上都设置了ssh。参见how
确保您正在使用ssh git remote。如果您克隆了https,则只需使用此git命令git remote set-url origin git@github.com:your-username/your-repo-name.git
如果您已经正确设置了ssh,但是它刚刚停止工作,请执行以下操作:
eval "$(ssh-agent -s)"
ssh-add
如果仍然存在问题,请检查并确保尚未从github中删除ssh。如果ssh已从github中删除,则可以将其重新添加。使用pbcopy < ~/.ssh/id_rsa.pub
复制ssh密钥,然后转到github ssh设置并添加它。
我建议您始终使用ssh。对于与我合作过的大多数团队,除非您使用ssh,否则您将无法访问该存储库(大多数为私有存储库)。对于初学者来说,它似乎更难一些,但是以后您会发现它更容易且更安全。
答案 13 :(得分:1)
类似问题:
当使用 passphrase
for git 克隆 Git 时,我给了 SSH URL
。
因此,每次我在 VS Code
Windows 10
时,现在都会出现此错误
下面修复了问题:
1。在 CMD
setx SSH_ASKPASS "C:\Program Files\Git\mingw64\libexec\git-core\git-gui--askpass"
setx DISPLAY needs-to-be-defined
2。退出 CMD 和 VS Code
3 .重新打开 VS Code
4。 VS Code 现在显示一个弹出对话框,我们可以在其中输入 passpharse
以上命令适用于 Windows 操作系统,类似的说明适用于 Linux/MAC。
答案 14 :(得分:1)
对我来说,在断开正常工作后,我遇到了VPN公司的问题。
使用命令ssh -vvvT git@github.com
答案 15 :(得分:0)
open ~/.ssh
然后手动删除“known_hosts”文件
ssh-keygen -t rsa -C "your@email.com"
然后拖拽文件: id_rsa 和 id_rsa.pub 会在 .ssh 目录中生成,复制 id_rsa.pub 中的内容
登录github --> 设置 --> SSH 和 GPC 密钥 --> 添加 SSH 密钥 --> 将复制的内容粘贴到密钥中
在命令下运行
ssh -T git@github.com
好的,可以了
答案 16 :(得分:0)
我的情况: 我使用 Windows 并且我有 1 个以上的用户帐户。 我收到了同样的错误,解决方法是使用管理员权限启动 git bash。
答案 17 :(得分:0)
当我的计算机上具有无效的RSA SSH密钥和有效的ED25519 SSH密钥时,我遇到了此问题。我相信Gitlab正在检查RSA密钥,然后在检查ED25519密钥之前失败并停止了。
我通过删除设备上的两个密钥并生成新的RSA SSH并提供了gitlab来解决此问题。
答案 18 :(得分:0)
切换到使用https即可。 首先切换到https而不是ssh键。 git remote set-url origin
然后它将要求git用户名和密码。
答案 19 :(得分:0)
另一个问题可能是您的互联网连接。也许显而易见,但花了我几分钟才弄清楚我的无线网络已经关闭了。)
答案 20 :(得分:0)
我犯了非常常见的错误。我使用剪辑命令xclip -sel clip < ~/.ssh/id_rsa.pub
复制,但是在粘贴到github键输入框中时,我使用退格键删除了最后一个换行符,这实际上更改了公钥。
因此,请始终按原样复制并粘贴ssh公钥,而不删除最后一个换行符。
答案 21 :(得分:0)
添加ssh密钥对我有用。您可以在Mac上使用ssh-keygen命令创建ssh密钥。您应该能够在YourRepository上看到“部署密钥”菜单。“设置”不要忘记选中“允许写访问权限”选项。
答案 22 :(得分:0)
将项目上传到gitlab时遇到此错误。我不是从git克隆,而是上传项目。为了将代码推送到gitlab,您可以使用ssh或https两种方式。如果使用https,则必须输入gitlab帐户的用户名和密码。要将代码推送到git,可以使用以下代码。
第一次按下Git
>$ cd
>$ mkdir .ssh;cd .ssh
>$ ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
-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 git@gitlab.com:Account_User_Name/Your_project_Name.git master
-设置上游:告诉git原始路径。如果Git先前已推送您当前的分支,它将记住原点在哪里
master :这是初始化时要推送到的分支的名称
答案 23 :(得分:0)
我正在使用Ubuntu
在阅读许多答案后,即使我已经将SSH密钥添加到我的git帐户中,并尝试使用ssh -T git@gitlab.com
并说Welcome <my username>
对其进行测试,但它们都无法解决问题,但是仍然告诉我没有访问权限。然后我发现原因是:
通常,如果您不是root
用户,则每个git命令都需要使用sudo
来运行。
在运行sudo git clone <SSH....>
时(例如)。它将在root
权限下执行,但是在偶然创建SSH密钥时,我以普通用户身份运行它,并将密钥保存在~/.ssh/id_rsa
中,它解析了绝对路径/home/username/.ssh/id_rsa
。并且在进行sudo git clone ...
时会在{{1}}中查找SSH密钥
为什么我可以确定这一点。查看git在哪里寻找您的SSH密钥。运行以下命令:/root/.ssh/id_rsa
。它会告诉您寻找SSH密钥的位置。
所以我建议的解决方案是:
重新创建SSH密钥(遵循此instruction),但首先要运行sudo GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone <your repository in SSH>
,那么您就可以了。
答案 24 :(得分:0)
我遇到了这个问题,我发现我的系统的DNS地址错误。验证您的网络并使用
进行测试ssh -vvv git@bitbucket.org
并阅读输出消息。如果看到“可以使用git或hg连接到Bitbucket”。 , 一切都好。
答案 25 :(得分:0)
使用您的https来源而不是ssh网址
示例:
git remote add origin https://gitlab.com/user/folder.git
答案 26 :(得分:0)
如果您通过VPN连接到git存储库,也会发生这种情况。 确保您已连接到用于访问组织资源的VPN。
答案 27 :(得分:0)
奇怪的是,我仅在我的许多存储库中的1个中收到此错误。
我的问题是在安装了适用于Windows的新GitHub桌面后,其中以前的Win的旧GitHub将密钥保存在~/.ssh/github_rsa
和~/.ssh/github_rsa.pub
中,因为Win的新GitHub期望将其保存在~/.ssh/id_rsa
中因此解决方案只是重命名现有的私钥和公钥:
~/.ssh/github_rsa -> ~/.ssh/id_rsa
~/.ssh/github_rsa.pub -> ~/.ssh/id_rsa.pub
之后,让我再次访问存储库而没有问题。
答案 28 :(得分:0)
与其他答案一样,使用https
代替ssh
是解决方案。
我发布了一个答案,以给出可能解决方案的具体示例。当我使用以下命令行将远程URL更改为HTTPS时,我用bitbucket解决了这个问题:
git remote set-url origin <bitbucket_URL>
之后,我可以使用以下命令将内容推送到存储库中:
git push -u origin --all
然后我也可以使用Sourcetree
答案 29 :(得分:-1)
对我来说,它给出了相同的错误:
请确保您具有正确的访问权限,并且存储库存在。
一个快速的解决方法是消除〜/ .ssh / config文件
mv config config_old && touch config
eval "$(ssh-agent -s)"
git clone your_repo
As it turned out to be the config file that was corrupt and configured with two ids
答案 30 :(得分:-1)
进入你的 cmd 并运行这个: git config --global http.sslverify false