Github权限被拒绝:ssh add agent没有身份

时间:2014-10-22 11:02:11

标签: bash github ssh permission-denied public-key

这是我第一次访问github而且我没有使用控制台。我在Macbook上(使用Bash)。当我尝试访问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.

我已尝试按照关于Permission denied的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)”返回“Agent pid 2314” 但是,ssh-add -l返回“代理没有身份。”

这就是我被困住的地方。我试过谷歌搜索这个问题,并在这里搜索。我试过访问ssh目录中的文件,但没有。只是一个名为Knownusers的文件夹。

有人可以帮我解决这个问题吗?

13 个答案:

答案 0 :(得分:136)

answer中的完整详情。

总之,当ssh-add -l返回The agent has no identities时,它表示ssh使用的密钥(存储在〜/ .ssh / id_rsa,〜/ .ssh / id_dsa等文件中) )要么丢失,要么身份验证代理(ssh-agent)不知道,或者他们的权限设置不正确(例如,世界可写)。

如果您的密钥丢失(即您没有生成任何密钥),请使用' ssh-keygen' (例如,ssh-keygen -t rsa)生成它们,然后使用ssh-add添加它们。

如果密钥存在但ssh-agent不知道(例如,它们可能位于非标准文件夹中),请使用&s; ssh-add' (例如,ssh-add /path/to/my-ssh-folder/id_rsa)添加它们。

如果您在使用ssh-addssh-agent时遇到问题,请参阅此answer

答案 1 :(得分:87)

试试这个:

ssh-add ~/.ssh/id_rsa

为我工作

答案 2 :(得分:25)

对于macOs的2017年答案Sierra&高塞拉:

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帮助程序的gitconfig条目:

 https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48

4:重启终端,使其生效。

答案 3 :(得分:10)

我在同一个问题上被困了一段时间,我最终解决了这个问题。

我的问题:我无法执行任何推送。我可以检查&amp;看到我的遥控器(使用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&#39; Permission denied publickey&#39;中的所有命令。帮助页面,只有ssh-add -l命令工作/似乎有用(在运行前面的步骤之后),它成功返回了我的密钥。 The last step显示您在GitHub页面上检查公钥的位置。此命令将帮助您检查所有密钥:ls -al ~/.ssh

然后推送命令最终起作用了!

我希望这会有所帮助! 祝所有人好运。

答案 4 :(得分:7)

运行以下命令:

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密钥

完成!

答案 5 :(得分:5)

首先你需要进入你的ssh目录
对于此类型,在您的终端中使用mac或您在窗口中使用的任何命令

cd ~/.ssh

现在它在ssh中 在这里,您可以找到与您的所有项目相关的所有ssh密钥/文件。现在,键入以下命令以显示是否有任何可用的ssh密钥

ls

这将显示所有可用的ssh,在我的情况下有两个
现在,您需要启动代理以在其中添加ssh。对于此类型的以下命令

eval "$(ssh-agent -s)"

现在最后但并非最不重要的是,您将在命令

之后在此代理类型中添加ssh
ssh-add ~/.ssh/your-ssh

替换

  

将你的ssh替换为你的ssh文件名,你有一个列表形式第二步ls command

答案 6 :(得分:5)

这可能导致任何新终端,代理ID不同。 您需要为代理

添加私钥
$ ssh-add <path to your private key>

答案 7 :(得分:1)

我意识到的另一个元素是,通常在Mac OS X / Users /的根文件夹中创建.ssh文件夹。如果您尝试从另一个文件夹使用ssh -vT git@github.com,即使您添加了正确的密钥,它也会给您一个错误。

您需要再次添加密钥(ssh-add&#39;正确路径到id_rsa&#39;)从当前文件夹成功进行身份验证(假设您已将密钥上传到Git中的个人资料)

答案 8 :(得分:1)

对于我的 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,...

答案 9 :(得分:0)

经过长时间的努力,我终于能够在Windows上解决这个问题,对我来说,用户env变量GIT_SSH设置为指向

  

&#34; C:\ Program Files(x86)\ WinScp \ PuTTY \ plink.exe&#34;

与WinScp一起安装。我将指向更改为使用默认 ssh.exe ,它附带git-scm&#34; C:\ Program Files \ Git \ usr \ bin \ ssh.exe&#34;

答案 10 :(得分:0)

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应该可以工作

答案 11 :(得分:0)

这对我有用:
def coefs(x): m = Matrix([1, 2*x, 0 ,0, 0, 0]) for k in range(3): m[k+2] = -2*(k+1)*m[k]+2*x*m[k+1] print(k) return m

然后,键入: chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

答案 12 :(得分:0)

从备份还原硬盘驱动器后出现此问题。

我的问题: 我可以检查并查看我的遥控器(使用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在我的手机上生成的,因此我必须将其复制到Terminal中以获取pw)。