这是我第一次访问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.

我试着按照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返回“代理没有身份”。

这就是我被困住的地方。


当前回答

我也曾被同样的问题困扰过一段时间,但最终还是解决了。

我的问题是:我无法执行任何推送。我可以检查和看到我的远程(使用git remote -v),但当我执行git push origin master时,它返回:Permission denied (publickey)。无法从远程存储库读取。所以。

我是怎么解决的:

I generated a key using ssh-keygen -t rsa. Entering a name for the key file (when asked) was useless. I could then add the key (to git): ssh-add /Users/federico/.ssh/id_rsa , which successfully returned Identity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa) I added the SSH key to github using this help page. Having tried all the commands in Github's 'Permission denied publickey' help page, only the ssh-add -l command worked / seemed useful (after having ran the previous steps), it successfully returned my key. The last step shows you where to check your public key on your GitHub page. And this command will help you check all your keys : ls -al ~/.ssh.

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

我希望这对你有所帮助! 祝大家好运。

其他回答

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

您需要从当前文件夹中再次添加密钥(ssh-add '正确的路径到id_rsa')以成功进行身份验证(假设您已经将密钥上传到Git中的配置文件中)

执行如下命令:

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

完成了!

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

如果您正在使用Linux或Windows打开终端或cmd在目录你想要你的密钥。创建一对公私钥

 $ ssh-keygen -t ed25519 -C "your_email@example.com"

如果您正在使用不支持Ed25519算法的旧系统,请使用:

 $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

生成公钥/私钥对。 输入要保存密钥的文件(/c/Users/YOU/.ssh/id_ALGORITHM):

输入密码短语(空表示没有密码短语):[键入一个密码短语或输入没有密码短语]

再次输入相同的密码短语:[键入一个密码短语或输入不带密码的for]

现在,在Linux中

$ sudo cp <filename without .pub ending>  ~/.ssh

在Windows中,只需将<filename不带.pub结尾的>文件复制到C:\Users\your_username\。ssh目录

然后

$ ssh-add ~/.ssh/<filename without .pub ending>

现在可能有用了!

详情请在此回答。

总而言之,当ssh-add -l返回“代理没有身份”时,这意味着ssh使用的密钥(存储在~/。ssh / id_rsa ~ /。Ssh /id_dsa等)要么丢失,Ssh -agent(身份验证代理)不知道它们,要么它们的权限设置不正确(例如,world writable)。

如果您的密钥丢失或没有生成任何密钥,请使用ssh-keygen -t rsa,然后ssh-add来添加密钥。

如果密钥存在,但ssh-agent不知道(比如密钥在非标准文件夹中),则使用ssh-add /path/to/my-non-standard-ssh-folder/id_rsa添加密钥。

如果您在ssh-add或ssh-agent上遇到问题,请参阅此答案。