【发布时间】:2017-07-21 17:21:29
【问题描述】:
Git pull over ssh 不适用于我组织的其中一个私有存储库。
➜ player2-js git:(master) git remote set-url origin git@github.com:MyOrganization/player2-js
➜ player2-js git:(master) GIT_TRACE=1 git pull
11:24:39.494710 git.c:371 trace: built-in: git 'pull'
11:24:39.495491 run-command.c:350 trace: run_command: 'fetch' '--update-head-ok'
11:24:39.495882 exec_cmd.c:116 trace: exec: 'git' 'fetch' '--update-head-ok'
11:24:39.498051 git.c:371 trace: built-in: git 'fetch' '--update-head-ok'
11:24:39.499378 run-command.c:350 trace: run_command: 'ssh' 'git@github.com' 'git-upload-pack '\''MyOrganization/player2-js'\'''
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Url 是正确的,我是从 github 上复制的并仔细检查了它。而且,当然我的 SSH 访问是正确的,我也检查了它:
➜ player2-js git:(master) ssh -T git@github.com
Hi MyOrganization/academy-ui! You've successfully authenticated, but GitHub does not provide shell access.
对于我拥有相同访问权限的其他组织的存储库,我也没有任何问题。我的同事也没有相同的回购错误。 同时我可以正常加载它:
➜ player2-js git:(master) git remote set-url origin https://besuhoff@github.com/MyOrganization/player2-js
➜ player2-js git:(master) git pull
Password for 'https://besuhoff@github.com':
Already up-to-date.
我查看了 Stack,但只发现了公钥有问题或缺少 repo 权限的情况,这两种情况都不是我的情况。
会是什么?
UPD。感谢@Jakuje,我发现我使用了不正确的密钥。对于在同样非常具体和奇怪的情况下运行的任何人,我发布了重现步骤:
- 初始状态,一切都通过 ssh 运行
- 我通过 ssh-keygen 创建了一个新的密钥文件,将其放入我的 .ssh 文件夹中
- 我授权新创建的密钥访问我的一个存储库
- 我的控制台 git 客户端在通过 ssh 向 git@github.com 授权时开始使用这个新密钥(怎么会?ssh-keygen 添加到 ssh-agent 什么的???)
【问题讨论】:
-
嗯,听起来很奇怪。如果这里没有人可以提供帮助,请写信给 GitHub 支持并询问,他们通常会很快回复。
-
您在哪里设置了
ssh密钥?第一个成功表明您正在使用名为MyOrganization/academy-ui的密钥,但第二个成功是使用besuhoff用户。那肯定是另一回事。 -
@Jakuje 愚蠢!谢谢先生的提示!那是ssh-keygen,我会更新帖子
-
尝试:
ssh -v git@github.com看看你发送的愿望密钥。