昨天我创建了一个ssh密钥并为工作克隆了一个存储库。在进行了一些更改后,我尝试推送提交:
git push
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我看过这个活跃的SO帖子。我的问题依然存在。我不知道如何追踪这个问题,所以将分享我认为相关的一切。
我的笔记本电脑上有个人和工作Rest室。我的工作生活在~/Documents/Projects/Zen/Projects/
下嵌套的任何目录中。其他任何地方,例如~/Documents/Projects/Personal/
都是用于个人github的。
我的.gitconfig如下所示:
[user]
email = 12345+doug@users.noreply.github.com
name = 12345doug
[includeIf "gitdir:/home/doug/Documents/Projects/Zen/"]
path = ~/.git-zen
/.git-zen是这样的:
[user]
email = doug@work.com
name = doug-work
目前我在回购中:
pwd
/home/doug/Documents/Projects/Zen/Projects/analytics-psql-action
有一些提交准备推送:
~/Documents/Projects/Zen/Projects/analytics-psql-action$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
我在这个目录中的git配置似乎是正确的:
git config user.name
doug-work
和
git config user.email
doug@work.com
要创建我的ssh密钥,我在github.com.上关注了这篇文章
ssh-keygen -t rsa -b 4096 -C "doug@work.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
然后,我将本教程中的密钥添加到我的工作github设置中。
到目前为止,我认为我已经把一切都设置好了?但是当我尝试从这个回购中推送时:
~/Documents/Projects/Zen/Projects/analytics-psql-action$ git push
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
绝望中,我重新命名了repo,并试图从fresh中克隆:
git clone git@github.com:work/analytics-psql-action.git # real path actually used not 'work'
Cloning into 'analytics-psql-action'...
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
关于回购本身,如果我进入回购设置
如何克隆并推送到存储库?我应该从哪里开始尝试找出为什么我的ssh键设置不起作用?
首先,简单介绍一下背景:在您使用的URL中:
git clone git@github.com:...
这个问题唯一真正重要的部分是< code>git@github.com部分。你也可以这样拼写:
git clone ssh://git@github.com/...
(使用完全相同的文本其余部分代替…
)具有完全相同的效果。
接下来,要诊断问题,您需要从命令行运行ssh
:
ssh -T git@github.com
如果您的URL显示< code>git@corp.com,您会希望在这里运行< code>ssh -T git@corp.com,以此类推。也就是说,我们采用< code>user@host部分并运行< code>ssh -T user@host。这使得它适用于各种公司托管的分支变体,而不仅仅是GitHub。它还让我们可以在GitHub上使用多个登录:见下文。
现在,运行ssh-Tgit@github.com
后,您可能会得到一个权限被拒绝的错误,这意味着您在github.com尝试的密钥都不起作用,或者您可能会得到这种输出:
Hi M! You've successfully authenticated, but but GitHub does not provide shell access.
(在这里,我们向GitHub证明自己是M,詹姆斯·邦德间谍部门的负责人。)
现在,如果M有权限访问(读取和写入)存储库,我们将能够读取和写入存储库。但是也许M只有读取权限,实际上是Q有写入权限。我们偷了M和Q的密钥,但是我们如何以Q的身份进入呢?
在我们开始之前,让我们看看如果这种身份验证完全失败该怎么办。我们的下一步是运行:
ssh -Tv git@github.com
这会产生大量输出,所有输出都以< code>debug1为前缀。这里可能会有一些线索,告诉我们到底出了什么问题。如果没有,我们可以使用< code>ssh -Tvv或< code>ssh -Tvvv来获得更多的调试输出,前缀为< code>debug2和< code>debug3。在查看所有这些输出时,通常的怀疑是确保ssh查看的是正确的< code >。ssh/*文件,其中存储了您的ssh密钥。确保:
如果没有,请寻找特定于操作系统的方法,为ssh提供正确的权限和/或路径。
由于邪恶的间谍闯入了MI-5记录,我们已经泄露了M和Q的密钥,现在我们希望将我们的特洛伊木马插入系统,以便我们可以尝试对詹姆斯·邦德进行过分精心的杀戮。但那是以后的事:现在,我们以M的身份进入,但我们需要以Q的身份进入。我们该怎么办?
为了以 Q 而不是 M 的形式进入 GitHub,我们需要正确配置 ssh。原因很简单:仅仅在 .ssh
目录中列出我们所有的密钥是行不通的。ssh 按某种顺序尝试它们,显然,我们的 ssh 首先尝试我们的 M 键。一旦它起作用,它就会进入,ssh停止尝试进一步的键。
我们需要先让我们的 ssh 尝试我们的 Q 键。我们可以删除M的密钥,但这很烦人:现在我们可以种植特洛伊木马,但我们找不到邦德的当前分配,只有M才能读取。我们想要的是一种选择我们将要尝试的密钥的方法。
这就是。ssh/config
文件包含:
Host as-q
Hostname github.com
User git
IdentitiesOnly yes
IdentityFile ~/.ssh/stolen-q-key
Host as-m
Hostname github.com
User git
IdentitiesOnly yes
IdentityFile ~/.ssh/stolen-m-key
现在我们可以将我们的两个存储库列为< code > ssh://as-m/MI5/bond-assignments . git 和< code > ssh://as-q/MI5/spy-devices . git ,或者< code > as-m:MI5/bond-assignments . git 和< code > as-q:MI5/spy-devices . git 。(也就是说,一旦您让这个部分工作起来,您将需要更新与您的克隆相关联的URL。使用< code > git remote set-URL origin new-URL 或< code>git config - edit或任何您喜欢的方式来实现这一点。)
当我们ssh as-q
时,我们将让ssh连接到github.com(Hostname
),使用git
作为用户名,并使用被盗的Q密钥作为密钥。当我们ssh as-m
时,我们将连接到同一个主机并使用同一个用户,但这次使用被盗的M密钥。
您遇到了另一个问题:
如果系统ssh工作正常,告诉Git使用系统ssh,例如< code > Git config-global core . ssh command ssh 。如果不够,就使用捆绑的ssh(但是上面的测试是如何进行的呢?).
我在窗户上用乌龟。当我试图从标准Windows资源管理器的上下文菜单中克隆时,出现以下错误: 请确保您有正确的访问权限和存储库存在 更准确地说,终端的快照如下: 吉特。exe克隆--进度-v“git@arobotdev:\git\AlfaRobot.git“C:\Work\AlfaRobot” 克隆到“C:\Work\AlfaRobot” 权限被拒绝,请重试 权限被拒绝,请重试 权限被拒绝(公钥、
我正试着和git建立联系http://danielmiessler.com/study/git/#website来管理我的网站。 我已经完成了说明中的最后一步:git推送网站master:refs/heads/master 我正在使用win7中的git ming32命令行 这里的一个问题可能是程序正在寻找Bill@***. com。当我通过ssh连接到我的网站时,我有一个不同的用户名(让我们说“a
我已经找了很多个小时,寻找一个解决我这个看似容易解决的问题的方法。不是我的搜索没有结果,而是我的搜索找到了这么多不同的解决方案--没有一个有效。 ‘权限被拒绝(公开密钥)。致命:无法从远程存储库读取。‘ 我已经试过(并且再三试过)用许多不同的方法来修复它。正如我所说的,在过去的两天里,我花了很大一部分时间四处寻找答案。以下是我尝试过的一些事情: heroku键:清除后跟heroku键:添加 使用'
我有两个公共存储库:和: 当我尝试从公共存储库peterI获取最新代码时,出现以下错误: 存储库肯定存在:。我需要配置哪些访问权限?也许是关于权限的?谢谢。 更新1。我尝试了特雷弗·特雷西在他的回答中提出的建议,但没有成功: 更新2。我去看了文件. git\config,这是我在该文件末尾看到的: 公共存储库ssh://manuelM@示例。net/~ peterI/public\u html/p
我有本地工作副本的SourceTree。所有操作都很好,我可以通过SourceTree进行简单的提取、推拉等操作。我只需要做一个在SourceTree中不存在的力推。 我打开终端做git推-f 我不确定什么是问题。