有人看到此错误并知道该怎么办吗?
我正在使用终端,我在根目录中,GitHub存储库存在,我现在不知道该怎么办。
> git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
有人看到此错误并知道该怎么办吗?
我正在使用终端,我在根目录中,GitHub存储库存在,我现在不知道该怎么办。
> git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Answers:
GitHub无法验证您的身份。因此,或者您没有设置SSH密钥,因为您尚未在计算机上进行设置,或者您的密钥未与GitHub帐户相关联。
您还可以使用HTTPS URL代替SSH / git URL,以避免必须处理SSH密钥。这是GitHub的推荐方法。
ssh -vT git@github.com
提供了许多有关为什么不起作用的信息。
您是否在〜/ .ssh目录中创建了一个配置文件?它应具有以下内容:
Host github.com
IdentityFile ~/.ssh/github_rsa
假设您创建了一个名为github_rsa的ssh密钥
并上传到GitHub ...
注意:如果〜/ .ssh /目录中有1个以上的键(2个或更多),则必须遵循这种显式配置方式。如果您不以这种方式指定密钥,那么将按顺序使用第一个密钥并将其用于github身份验证,因此它取决于密钥文件名。
ssh -T git@github.com
正确回答,同时git push -u origin master
给出与问题相同的错误。为什么我可以正确连接到它,但不能推动它或从中获取?
我知道这个问题。添加ssh密钥后,也将您的ssh密钥也添加到ssh代理(来自官方文档https://help.github.com/articles/generating-ssh-keys/)
ssh-agent -s
ssh-add ~/.ssh/id_rsa
在此之后,一切正常,git可以查看适当的密钥,然后再执行。
ssh-agent -s
ssh-add ~/.ssh/github_rsa
您需要生成一个SSH密钥(如果您没有SSH密钥),并将公钥与您的Github帐户相关联。请参阅Github自己的文档。
这发生在我身上。由于某种原因,我的出身被弄乱了,却没有意识到:
检查您的设置是否仍然正确
git remote -v
网址必须类似于ssh://git@github.com/YourDirectory/YourProject.git; 如果看不到git@github.com,请使用
git remote set-url origin git://github.com/YourDirectory/YourProject.git
设置正确。或者,您可以使用github应用程序在特定存储库的设置面板中检查并设置主远程存储库url。
假设您正在通过SSH连接GitHub,则可以运行以下命令进行确认。
$git config --get remote.origin.url
如果您得到的结果具有以下格式git@github.com:xxx / xxx.github.com.git,则应执行以下操作。
生成SSH密钥(或使用现有密钥)。如果您有,则只需将密钥添加到ssh-agent(步骤2)和GitHub帐户(步骤3)。
以下适用于没有SSH密钥的用户。
步骤1生成公共/私有rsa密钥对。
$ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
系统将要求您确认SSH密钥的保存位置以及要使用的密码。
步骤2将密钥添加到ssh-agent
确保启用了ssh-agent
$eval "$(ssh-agent -s)"
将您的SSH密钥添加到ssh-agent中:
$ssh-add ~/.ssh/id_rsa
步骤3将SSH密钥添加到您的帐户
$sudo apt-get install xclip
$xclip -sel clip < ~/.ssh/id_rsa.pub
然后将复制的密钥添加到GitHub
转到设置 -> SSH密钥(个人设置侧边栏)-> 添加SSH密钥 ->填写表格(密钥在剪贴板上,只需使用ctrl + v)-> 添加密钥
完成上述步骤后,您应该解决权限问题。
参考链接: 生成SSH密钥。
cat ~/.ssh/id_rsa.pub
首先,我们需要检查计算机上现有的ssh密钥。打开终端并运行:
ls -al ~/.ssh
#or
cd ~/.ssh
ls
这将列出您的.ssh目录中的文件
最后取决于您看到的内容(以我为例):
github_rsa github_rsa.pub known_hosts
只需尝试设置您的RSA,并希望能解决您的“ git push origin”问题
$ ssh-keygen -lf ~/.ssh/github_rsa.pub
注意: RSA证书是密钥对,因此您将拥有一个私有证书和一个公共证书,因为它属于github(在这种情况下),所以私有证书将无法访问,但是当发生此错误时,公共证书是您可能会丢失的证书(至少这是我的情况,我的github帐户或回购以某种方式弄乱了,我不得不“链接”先前生成的公钥)
SHA
从此命令将输出复制到github?
我收到此错误。原来我刚刚将OSX升级到了Sierra,而我的旧密钥不再注册。
起初我以为是“升级到macOS Sierra会破坏您的SSH密钥并将您锁定在自己的服务器之外”
但是我避开了那个。原来我只需要重新注册我现有的密钥:
ssh-add -K
然后输入密码...完成!
另一个解决方案:
创建SSH密钥,键入 ssh-keygen -t rsa -C "your_email@example.com"
。这将同时创建id_rsa和id_rsa.pub文件。
将id_rsa添加到本地计算机上的ssh列表中: ssh-add ~/.ssh/id_rsa.
生成密钥后,使用以下命令获取pubkey:
cat ~/.ssh/id_rsa.pub
你会得到类似的东西:
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1gD2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== user@email.com
复制此密钥(值)并转到github.com,并在设置(ssh和pgp密钥)下添加您的公共密钥。
如果您不访问自己的存储库,或在克隆的存储库内进行克隆(使用一些“ git submodule ...”命令):
在存储库的主目录中:
$ ls -a
1.打开“ .gitmodules”,您将发现类似以下内容:
[submodule "XXX"]
path = XXX
url = git@github.com:YYY/XXX.git
将最后一行更改为您需要提取的存储库的HTTPS:
[submodule "XXX"]
path = XXX
https://github.com/YYY/XXX.git
保存“ .gitmodules”,然后运行子模块的命令,“。git”将被更新。
2.打开“ .git”,转到“ config”文件,您将找到以下内容:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/YYY/XXX.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[submodule "XXX"]
url = git@github.com:YYY/XXX.git
将最后一行更改为您需要提取的存储库的HTTPS:
url = https://github.com/YYY/XXX.git
因此,在这种情况下,主要问题只是URL。现在可以在存储库页面顶部找到任何存储库的HTTPS。
这为我工作:
1-删除所有起源
git remote rm origin
(请参阅https://www.kernel.org/pub/software/scm/git/docs/git-remote.html)
* remote:“管理要跟踪其分支的存储库集(“远程”)。
* rm:“删除名为的遥控器。将删除该遥控器的所有远程跟踪分支和配置设置。”
2-检查所有已删除:
git remote -v
3-添加新的原始母版
git remote add origin git@github.com:YOUR-GIT/YOUR-REPO.git
那是所有人!
我之前在我的php项目中使用github。在使用github时,我使用的是ssh而不是https。我已经设置好机器,每次我提交并推送代码时,都会询问我rsa密钥密码。
几天后,我停止了php项目的工作,忘记了rsa密码。最近,我开始从事Java项目,并移到了bitbucket。从那时起,我忘记了密码,无法恢复密码我想,所以我决定对新项目使用https(推荐)协议,并在问题中遇到了相同的错误。
我怎么解决的?
跑此命令告诉我的git使用https而不是ssh:
git config --global url."https://".insteadOf git://
删除任何遥控器(如果有)
git remote rm origin
重做从git init到git push的所有内容,一切正常!
PS:在调试过程中,我还从计算机上卸载了ssh,以为删除它可以解决问题。是的我知道!!:)
我认为我对您来说是最好的答案,您的git应用程序会在根用户目录中读取id_rsa.pub
/home/root/.ssh/id_rsa.pub
这就是为什么git无法读取/home/your_username/.ssh/id_rsa.pub中的密钥的原因。因此,您需要在/home/root/.ssh/中创建密钥
$ sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub
然后将密钥复制到您的github帐户中。对我有用。你可以尝试一下。
如果您已经创建了SSH密钥,但仍然出现错误,那是因为您需要授予用户读取和写入要克隆到的文件夹的权限。去做这个,sudo chmod 777 <your_folder_name_here>"
。当然,这是在生成SSH密钥之后,您仍然会收到此错误。希望这对将来的用户有所帮助。
编辑
如果您使用的是git bash,则要在Windows中使用admin进行添加
sudo chown -R $USER:$USER <your_folder_name_here>
好的,对此解决方案很少,可能已经提到其中一些解决方案,但只是为了使它们保持一致:
确保您的密钥存在,默认情况下为另一个〜/ .ssh /文件夹,即id.rsa和id.rsa.pub
确保密钥具有正确的权限,可以运行chmod:
chmod 600〜/ .ssh / id_rsa
chmod 644〜/ .ssh / id_rsa.pub
确保您的公钥(id_rsa.pub)的内容与远程存储库配置中上传的内容匹配
最后解决ssh代理的问题: ssh-add
一些更多信息:https : //itcodehub.blogspot.com/2015/01/ssh-add-problems-with-ssh-agent-and.html
chmod
您的描述运行时,它才默默地发生。谢谢。
在“ git push”期间出现相同的错误。在客户端,我有两个来源和主人。我删除了一个,然后工作正常。
您可以使用Https网址登录
我猜您在说git push时尝试使用ssh url登录,如果仅询问密码就认为您正在通过ssh连接。更好地使用http url。
对我来说,我尝试过-
eval "$(ssh-agent -s)"
然后我跑
ssh-add ~/.ssh/path-to-the-keyfile
为了生成密钥,您可以运行
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
这将生成一对密钥(公共密钥和私有密钥)。
您可以将该密钥存储到github以获取更多信息,请阅读以下内容向您的GitHub帐户添加新的SSH密钥
我希望它会帮助其他人:)
tl; dr
在~/.ssh/config
放
PubkeyAcceptedKeyTypes=+ssh-dss
方案
如果您使用的版本是openSSH> 7,例如在MacBook Pro触摸板上说ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0
您还拥有一台较旧的Mac,最初将您的密钥放到Github上,可能使用的是id_dsa密钥。默认情况下,OpenSSH v7不使用这些DSA密钥(包括this ssh-dss
),但是您仍然可以通过将以下代码放入您的代码中来重新添加它~/.ssh/config
PubkeyAcceptedKeyTypes=+ssh-dss
为我工作的消息来源是此Gentoo新闻通讯
现在,您至少可以使用GitHub,然后将密钥固定为RSA。
我在搜索git pull
远程主机上使用的类似错误消息的解决方案时找到了此页面:
$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我通过连接从本地计算机连接到远程主机ssh -AY remote_hostname
。这不是OP的问题的解决方案,但对遇到此页面的其他人很有用,因此请在此处发布。
请注意,在我的情况下,git pull
在我的本地计算机上可以正常工作(也就是说,已经设置了ssh密钥,并将其添加到GitHub帐户等)。我通过将其添加到~/.ssh/config
笔记本电脑上解决了我的问题:
Host *
ForwardAgent yes
然后,我使用重新连接到远程主机ssh -AY remote_hostname
,git pull
现在可以工作了。配置中的更改使我可以将ssh密钥对从本地计算机转发到任何主机。在该ssh会话中实际转发它的-A
选项ssh
。在此处查看更多详细信息。
也许您的ssh-agent未启用您可以尝试
安装它
启用ssh-agent
C:\ Program Files \ Git \ cmd
启动SSH代理
转到GitHub帐户仪表板,找到您的项目存储库,单击“设置”选项卡-在“ 部署密钥”下,您必须添加SSH密钥。打开终端并输入:
cat ~/.ssh/id_rsa.pub | pbcopy
这将从您的id_rsa.pub文件中复制密钥。因此,只需返回到GitHub仪表板,将其粘贴,单击“ 添加密钥”即可。
相同的解决方案适用于Bitbucket帐户。