Permission denied (publickey). fatal: Could not read from remote repository.

552 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天,点击查看活动详情

image.png

报错原因翻译过来就是:“拒绝服务(公共密钥)”,也就是说由于ssh公钥的某些问题导致连接失败。我记得我的windos电脑是有这个公钥的,但是linux服务器上肯定是没这个的。这里记录下解决这个问题的流程。

其实github官网设置中也给了一个说明。我主要也是参考这个来的。

一、检查现有的 SSH 密钥

1. 输入ls -al ~/.ssh以查看是否存在现有的 SSH 密钥。

```
$ ls -al ~/.ssh
```

2. 检查目录列表以查看您是否已经拥有公共 SSH 密钥。默认情况下,GitHub 支持的公钥文件名是以下之一。

  • id_rsa.pub
  • id_ecdsa.pub
  • id_ed25519.pub

image.png

我这里显然是没得了。

二、生成新的 SSH 密钥并将其添加到 ssh-agent

1. 生成新的 SSH 密钥

粘贴下面的文本,替换为您的 GitHub 电子邮件地址。

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

然后一直回车就可以了,回车就是默认配置

image.png

可以看到密钥已经生成了。 image.png

2. 将 SSH 密钥添加到 ssh-agent

1. 在后台启动 ssh-agent。

eval "$(ssh-agent -s)"

2. 将 SSH 私钥添加到 ssh-agent。

ssh-add ~/.ssh/id_ed25519

如果您使用不同的名称创建密钥,或者如果您要添加具有不同名称的现有密钥,请将命令中的id_ed25519替换为您的私钥文件的名称。

3. 将 SSH 密钥添加到您在 GitHub 上的帐户上。

  1. 首先将 SSH 公钥复制到剪贴板。
cat ~/.ssh/id_ed25519.pub

如果您的 SSH 公钥文件的名称与示例代码不同,请修改文件名以匹配您当前的设置。复制密钥时,不要添加任何换行符或空格。

  1. 在任意页面的右上角,点击您的个人资料照片,然后点击设置

用户栏中的设置图标

  1. 在边栏的“访问”部分,单击SSH 和 GPG 密钥

  2. 单击新建 SSH 密钥添加 SSH 密钥

SSH 密钥按钮

  1. 在“标题”字段中,为新键添加一个描述性标签。例如,如果您使用的是个人笔记本电脑,则可以将此密钥称为“个人笔记本电脑”。

  2. 选择密钥类型,身份验证或签名。有关提交签名的更多信息,请参阅“关于提交签名验证”。

  3. 将您的密钥粘贴到“密钥”字段中。

    关键领域

  4. 单击添加 SSH 密钥添加密钥按钮

三、大功告成

image.png