Github 权限被拒绝:ssh add agent 没有身份
Posted
技术标签:
【中文标题】Github 权限被拒绝:ssh add agent 没有身份【英文标题】:Github permission denied: ssh add agent has no identities 【发布时间】:2014-12-17 19:35:06 【问题描述】:这是我第一次访问 GitHub,我没有使用控制台的经验。我在使用 Bash 的 MacBook 上。当我尝试访问 GitHub 时,我得到了这个:
git clone git@github.com:dhulihan/league-of-legends-data-scraper.git
Cloning into 'league-of-legends-data-scraper'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我已尝试按照 Github 页面上关于权限被拒绝的说明进行操作。
当我使用ssh -vT git@github.com
时,我得到以下信息:
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
debug1: identity file /Users/XXXX/.ssh/id_rsa type -1
debug1: identity file /Users/XXXX/.ssh/id_rsa-cert type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/XXXX/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/XXXX/.ssh/id_rsa
debug1: Trying private key: /Users/XXXX/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
接下来,eval "$(ssh-agent -s)"
返回“代理 pid 2314”,
但是ssh-add -l
返回“代理没有身份。”
这就是我卡住的地方。
【问题讨论】:
您有创建了 SSH 密钥吗?您的 github 帐户是否列出了它?你的 Mac 上有钥匙吗? 我一直在寻找这个问题的答案(不熟悉整个系统),结果发现:mac.github.com 它解决了我所有的问题。我强烈推荐它。感谢 Etan 朝着正确的方向前进! 您可能想要添加一个对此问题的答案(以及有关它如何解决您的问题的更多详细信息)并接受您的答案。 好的,我已经提交了答案。所以告诉我我只能在 2 小时内接受它。 【参考方案1】:此answer 中的完整详细信息。
综上所述,当ssh-add -l
返回“代理没有身份”时,表示ssh
使用的密钥(存储在~/.ssh/id_rsa
、~/.ssh/id_dsa
等文件中)要么丢失,要么身份验证代理 ssh-agent
不知道,或者他们的权限设置不正确(例如,全局可写)。
如果您的密钥丢失或未生成任何密钥,请使用ssh-keygen -t rsa
,然后使用ssh-add
添加它们。
如果密钥存在但 ssh-agent
不知道(例如它们位于非标准文件夹中),请使用 ssh-add /path/to/my-non-standard-ssh-folder/id_rsa
添加它们。
如果您在使用ssh-add
或ssh-agent
时遇到问题,请联系this answer。
【讨论】:
感谢@Doedoe 提供了一个不错的简短答案的链接。对于那些拥有 keyS 的人(即多个 Git 帐户),您可能必须为每个人使用ssh-add /path/to/keyX
,尤其是如果他们有非标准名称。详情在这里:***.com/questions/3225862/…(一个很好的答案)
谢谢。我被困在这里.. 但我意识到我需要在解决问题的权限部分后运行ssh-add
再次。在此之后,ssh -vT git@github.com
不起作用。我确实需要像上面提到的评论者一样添加 absolute 路径。然后,全是肉汁。
在第二种情况下,我忘记了密码,我使用help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase恢复了它【参考方案2】:
试试这个:
ssh-add ~/.ssh/id_rsa
为我工作
【讨论】:
嗨,欢迎来到 SO。请解释您的代码,以便您的其他用户可以理解发生了什么。干杯。 当您重新启动时,您的密钥已经消失,您必须再次“ssh-add”它们。 @Louwki 是的……这太烦人了。你知道解决办法吗? @ChrisCirefice 只需使用参数执行 ssh-add 即可将它们永久添加到您的钥匙串中。 ssh-add -K ~/.ssh/[你的私钥] 就我而言,私钥的文件权限错误。由chmod 600 ~/.ssh/id_rsa
修复,然后是ssh-add ~/.ssh/id_rsa
【参考方案3】:
2019 年适用于 macOS Sierra 和 High Sierra 和 Catalina 的答案:
PS:大多数其他答案都会让你创建一个新的 ssh 密钥......但你不需要这样做:)
正如https://openradar.appspot.com/27348363 中详细描述的那样,macOS/OS X 直到 Yosemite 曾经记住由命令 ssh-add -K <key>
添加的 SSH 密钥
因此,我必须采取以下 4 个步骤才能使其正常工作:
1: ssh-add ~/.ssh/PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)
2:在~/.ssh/config
中添加以下内容
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)
3:确保删除任何使用 osxkeychain helper 的 gitconfig 条目:
https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48
4:重启终端使其生效。
【讨论】:
很好的答案,我自己要提这个!显然,OS X 10.12.2 and later doesn't automatically load identities into ssh-agent(我个人认为这是一个非常愚蠢的可用性决定,但我理解安全隐患)。因此,您需要修改 SSH 配置以手动加载它们。我只是希望错误输出能更好地导致解决方案,而不是在互联网上搜索一个小时。 我尝试了这个答案,但似乎需要在 2 之后使用ssh-add -K <key>
再次添加密钥。@ChrisCirefice 的 link 似乎表明了这一点。【参考方案4】:
我在同一个问题上被困了一段时间,但我最终解决了。
我的问题:我无法执行任何推送。我可以检查并查看我的遥控器(使用git remote -v
),但是当我执行git push origin master
时,它返回:Permission denied (publickey). fatal: Could not read from remote repository.
等等。
我是如何解决的:
我使用ssh-keygen -t rsa
生成了一个密钥。输入密钥文件的名称(当被询问时)是没有用的。
然后我可以添加密钥(到 git):ssh-add /Users/federico/.ssh/id_rsa
,成功返回 Identity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
我已将 SSH 密钥添加到 github using this help page。
尝试了 Github 的“Permission denied publickey”帮助页面中的所有命令后,只有 ssh-add -l
命令有效/似乎有用(在运行了前面的步骤之后),它成功返回了我的密钥。 The last step 显示在 GitHub 页面上检查公钥的位置。此命令将帮助您检查所有密钥:ls -al ~/.ssh
。
然后推送命令最终起作用了!
我希望这会有所帮助! 祝大家好运。
【讨论】:
【参考方案5】:运行以下命令:
ssh-keygen -t rsa
ssh-add /Users/*yourUserNameHere*/.ssh/id_rsa**
pbcopy < ~/.ssh/id_rsa.pub**
转到您的 Github 帐户:https://github.com/settings/profile
1) 点击:SSH 和 GPG 密钥
2) 新的 SSH 密钥并在那里粘贴
3) 添加 SSH 密钥
完成!
【讨论】:
是的 - 如果您已经完成了创建 id_rsa.pub 文件的其他步骤,请复制并粘贴该 pbcopy 行,该行将密钥复制到剪贴板并按照 @zouhair 说明进行操作 - github 需要知道你的钥匙。特别是如果您使用的是 2FA。 我有点困惑,因为当前的文档说 git 创建了 github_rsa / github_rsa.pub。我的 /.ssh 目录中都有,但我似乎无法“获得许可”。我使用 id_rsa 在同一目录中创建了副本,但无济于事。 谢谢!我一直在重新尝试这个,无论出于何种原因,这对我有用,非常感谢。非常易于阅读、理解和执行。【参考方案6】:首先你需要进入你的 ssh 目录 对于这种类型的以下命令在您的终端中的 mac 或您在窗口中使用的任何内容
cd ~/.ssh
现在它在 ssh 中 在这里,您可以找到与您的所有项目相关的所有 ssh 密钥/文件。现在,输入以下命令来显示是否有可用的 ssh 密钥
ls
这将显示所有可用的 ssh,在我的例子中,有两个 现在,您将需要启动一个代理以在其中添加一个 ssh。对于这种类型的以下命令
eval "$(ssh-agent -s)"
现在最后但并非最不重要的一点是,您将在此代理类型中添加一个 ssh,然后执行命令
ssh-add ~/.ssh/your-ssh
替换
将 your-ssh 替换为您的 ssh 文件名,这是您在第二步得到的列表形式
ls command
【讨论】:
【参考方案7】:这可能导致任何新终端的代理 ID 不同。 您需要为代理添加私钥
$ ssh-add <path to your private key>
【讨论】:
【参考方案8】:这对我有用:chmod 700 .ssh
chmod 600 .ssh/id_rsa
chmod 644 .ssh/id_rsa.pub
然后,输入:
ssh-add ~/.ssh/id_rsa
【讨论】:
我认为问题与~/.ssh
权限无关。不过,您可以通过添加完整的命令(此处为 chmod
)并解释它的作用以及为什么需要它来大大改进您的答案。【参考方案9】:
对于我的 mac Big Sur,根据上述答案的要点,以下步骤对我有用。
$ ssh-keygen -q -t rsa -N 'password' -f ~/.ssh/id_rsa
$ ssh-add ~/.ssh/id_rsa
并按照说明将 ssh 公钥添加到 git hub;
https://docs.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account
如果一切顺利, 你应该能够得到以下结果;
$ ssh -T git@github.com
Hi user_name! You've successfully authenticated,...
【讨论】:
【参考方案10】:我意识到的另一个元素是,通常 .ssh 文件夹是在 Mac OS X /Users/ 的根文件夹中创建的。如果您尝试从另一个文件夹使用 ssh -vT git@github.com ,即使您添加了正确的密钥,它也会给您一个错误。
您需要从当前文件夹再次添加密钥(ssh-add 'correct path to id_rsa')才能成功验证(假设您已经将密钥上传到Git中的配置文件)
【讨论】:
【参考方案11】:从备份恢复硬盘驱动器后,我遇到了这个问题。
我的问题: 我可以检查并查看我的遥控器(使用 git remote -v),但是当我执行 git push origin master 时,它返回:权限被拒绝(公钥)。致命:无法从远程存储库中读取。
我已经有一个 SSH 文件夹和 SSH 密钥,通过终端 (ssh-add /path/to/my-ssh-folder/id_rsa
) 添加它们成功添加了我的身份,但我仍然无法推送并且仍然遇到相同的错误。生成新密钥对我来说不是一个好主意,因为它与 AWS 上的其他非常安全的权限相关联。
原来密钥和我的 Github 个人资料之间的链接已断开。
解决方案: 在配置文件 > 设置 > SSH 和 GPG 密钥中将密钥重新添加到 Github 解决了该问题。
还有: 我的帐户设置了 2 因素身份验证。在这种情况下,如果终端请求凭据,请使用您的用户名 - 而不是您的 Github 密码。对于 2 因素身份验证,您需要使用您的身份验证代码(对我来说,这是由 Authy 在我的手机上生成的,我必须将其复制到终端以获取密码)。
【讨论】:
【参考方案12】:经过长时间的努力,我终于能够在 Windows 上解决这个问题,对我来说,用户环境变量 GIT_SSH 被设置为指向
“C:\Program Files(x86)\WinScp\PuTTY\plink.exe”
与 WinScp 一起安装。我将指向更改为使用 git-scm "C:\Program Files\Git\usr\bin\ssh.exe"
附带的默认 ssh.exe【讨论】:
【参考方案13】:BitBucket 的步骤:
如果您不想生成新密钥,SKIP ssh-keygen
ssh-keygen -t rsa
将公钥复制到剪贴板:
clip < ~/.ssh/id_rsa.pub
登录比特桶: 转到查看配置文件 -> 设置 -> SSH 密钥(在安全选项卡中) 单击添加密钥, 将密钥粘贴到框中,添加描述性标题
回到 Git Bash:
ssh-add -l
你应该得到:
2048 SHA256:5zabdekjjjaalajafjLIa3Gl/k832A /c/Users/username/.ssh/id_rsa (RSA)
现在:git pull
应该可以工作了
【讨论】:
if you dont want to generate new keySKIP ssh-keygen
误导性更好:step needed if no ssh rsa key created
。我会添加必要的ssh-agent
命令来启动代理,否则ssh-add
将与Could not open a connection to your authentication agent.
出错。【参考方案14】:
tl;博士
ssh-add # no parameter
Identity added: /home/<user>/.ssh/id_rsa (user@host)
条件 - 如果上述方法不起作用,请检查它们
ssh-用户-文件夹中至少有两个通过ssh-keygen
接收到的文件:
ls ~/.ssh
id_rsa id_rsa.pub
启动 ssh 代理:
eval `ssh-agent -s`
验证
ssh-add -l
# voila:
2048 SHA256:<key one> user@host (RSA)
奖金
使用 SSH 密钥菜单中的 Github SHA256
从上方检查本地 SHA256
。如果它们相等,您应该可以使用您的密钥推送到 Github。
【讨论】:
以上是关于Github 权限被拒绝:ssh add agent 没有身份的主要内容,如果未能解决你的问题,请参考以下文章
尝试从其他计算机访问 ec2 时 ssh 权限被拒绝(公钥)