无法使用SSH克隆github存储库,即使我可以使用SSH连接到github。



我在我的windows机器上使用ssh-keygen创建了密钥文件,我得到了一个。pub文件和另一个文件,这是密钥,它是一个字符串,看起来像:

-----BEGIN OPENSSH PRIVATE KEY----- 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

之后,我使用ssh-add将该密钥文件添加到ssh-agent中。我通过运行ssh-add -l -E sha256来确保它是添加的。从这个命令我得到了我的密钥文件的指纹字符串。

然后,我去github找到我想通过SSH克隆的repo,我去了我的配置文件->>settings->>sshKeyys,我还没有密钥,所以我添加了一个新的,作为密钥,我上传了我的。pub文件的内容,这是一个以" SSH -rsa XXXX"开头的字符串。之后,它被成功地添加到github上,我可以看到我刚刚在github的页面上添加的密钥的指纹,当我运行ssh-add -l -E sha256时,它与我在windows机器上看到的指纹相匹配,所以它是相同的指纹。即使我看到在我的机器上的指纹是添加的结果ssh-agent私钥,虽然这在github实际上是.pub文件,所以我不知道他们是否应该给予相同的指纹,尽管我看到在我的机器上来自于一个关键文件(一个字符串从-----BEGIN OPENSSH PRIVATE KEY-----),和一个从github来自.pub文件(一个字符串从ssh-rsa XXXX

无论如何,我试图通过运行ssh -vT git@github.com来检查连接是否工作,并且它工作了,并且在详细日志中显示客户端(我的pc)正在发送与我运行ssh-add -l -E sha256(也与我在github上创建的密钥匹配)时看到的相同的指纹文件,它还说服务器接受了该指纹。最后的消息是Hi <my_username> ! You've successfully authenticated, but GitHub does not provide shell access.

所以这表明从我的pc到github的ssh连接显然有效。

最后,我回到我的repo不是复制常规的HTTP字符串来克隆repo,而是复制SSH字符串git@github.com:<user>/<repo_name>.git

然后在我的windows机器上打开git bash终端并输入git clone git@github.com:<user>/<repo_name>.git

但是我得到了这个错误

Cloning into '<filepath>'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

这是罕见的,因为ssh -vT git@github.com连接使用ssh-keygen刚刚生成的密钥文件工作。所以我认为我的github用户没有被授权从那个repo中拉(它不是我的,它是一个组织),但是如果我尝试常规的HTTP方法克隆它工作,只是SSH方式不起作用。

我错过了什么吗?我已经检查了很多文档,我没有发现使用指定密钥ssh连接到github工作的情况,但是通过ssh克隆即使HTTP克隆也没有。

.pub文件应该是一个公钥,以开头,例如ssh-rsa ...

ssh-add用于私钥加密。

在你的git bash会话中输入:

export GIT_SSH_COMMAND='ssh -Tv'

您将检查您的密钥是否由SSH提出。

如果所述密钥有默认名称,如~/.ssh/[id_rsa|id_edcsa|id_ed25519], SSH将尝试使用这些名称。

如果没有,您需要一个~/.ssh/config文件:

Host github.com
Hostname github.com
User git
IdentityFile /path/to/my/key (not the .pub)

相关内容

  • 没有找到相关文章

最新更新