解决[email protected]:Permission denied (publickey).fatal:Could not read from remote repository.

本文指导用户检查和生成SSH密钥,将其添加到ssh-agent,并上传到GitHub账户以安全连接。步骤包括使用GitBash检查现有密钥,生成新的SSH密钥(如ed25519或rsa),设置安全密码,将密钥添加到ssh-agent,以及在GitHub上添加SSH公钥。最后,通过ssh连接测试验证设置成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先,判断是否生成了密钥和公钥

1.打开Git Bash。

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

3.检查目录列表以查看您是否已有公共 SSH 密钥。默认情况下,GitHub 支持的公钥的文件名是以下之一:id_rsa.pub、id_ecdsa.pub、id_ed25519.pub。

2.没有生成密钥,如果已有密钥请忽略这一步。或者你可以按此操作重新生成一个

如果您收到~/.ssh不存在的错误,则说明您在默认位置中没有现有的 SSH 密钥对,需要创建新的 SSH 密钥对,具体见下一节,这里先讨论有密钥对的情况。

1.打开Git Bash

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

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

(这将使用提供的电子邮件作为标签创建一个新的 SSH 密钥。

   注意:如果您使用的是不支持 Ed25519 算法的旧系统,请使用:

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

 3.在出现提示时,键入安全密码

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

 3.将密钥加入ssh-agent

1.如果您看到列出了想要用来连接到 GitHub 的现有公钥和私钥对(例如id_rsa.pubid_rsa ),则可以将该密钥添加到 ssh-agent。

2.将密钥添加到ssh-agent

$ eval "$(ssh-agent -s)"

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

ssh-add ~/.ssh/id_ed25519

 (注:如果您使用的是 macOS 或 Linux,则可能需要在生成新的 SSH 密钥之前更新 SSH 客户端或安装新的 SSH 客户端。

将硬件安全密钥插入计算机。

打开Git Bash

粘贴下面的文本,替换您在 GitHub 上帐户的电子邮件地址。

ssh-keygen -t ed25519-sk -C "YOUR_EMAIL"

如果命令失败并且您收到错误invalid format,或者feature not supported,您可能正在使用不支持 Ed25519 算法的硬件安全密钥。请输入以下命令。

ssh-keygen -t ecdsa-sk -C "your_email@example.com"

出现提示时,请触摸硬件安全密钥上的按钮。

当系统提示您“输入要保存密钥的文件”时,按 Enter 接受默认文件位置。

> Enter a file in which to save the key (/c/Users/YOU/.ssh/id_ed25519_sk):[Press enter]

 当系统提示您输入密码时,请按Enter

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

 )

4.将 SSH 公钥添加到您在 GitHub 上的帐户。

$ clip < ~/.ssh/id_ed25519.pub

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

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

6.在侧边栏的“访问”部分中,单击SSH 和 GPG 密钥。 

7.单击新建 SSH 密钥或添加 SSH 密钥。

8.在“标题”字段中,为新密钥添加描述性标签。

9.选择密钥类型,身份验证或签名。

选择身份认证 

10.在“密钥”字段中,粘贴您的公钥。

11.单击添加 SSH 密钥

4.测试ssh连接

1.打开Git Bash

2.输入以下内容:

$ ssh -T git@github.com

您可能会看到这样的警告:

> The authenticity of host 'github.com (IP ADDRESS)' can't be established.
> ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
> Are you sure you want to continue connecting (yes/no)?

 3.验证您看到的消息中的指纹是否与GitHub 的公钥指纹匹配。如果是,则输入yes

公钥指纹在你将公钥加入github的时候会显示,如下图:

) 

> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.

出现此语句,说明成功 ,就可以上传代码了。

<think>好的,我现在需要解决GitHub出现的“Permission denied (publickey)”问题。首先,我得理解这个错误的原因。根据引用中的信息,这个问题通常是因为当前电脑中没有正确配置SSH公钥,导致Git无法通过密钥认证连接到GitHub。 第一步,我应该检查是否已经存在SSH公钥。根据引用[2]的建议,在Git Bash中运行`cat ~/.ssh/id_rsa.pub`命令查看是否存在公钥文件。如果提示找不到文件,说明还没有生成SSH密钥,需要创建新的。 接下来,生成新的SSH密钥对。使用`ssh-keygen -t rsa -b 4096 -C "邮箱@example.com"`命令,这里邮箱应该替换成注册GitHub时使用的邮箱地址。这里需要注意的是,引用[4]提到密钥必须保存在默认路径,否则可能导致环境变量问题。所以在生成密钥时,直接按回车使用默认路径`~/.ssh/id_rsa`,而不是自定义路径,避免后续麻烦。 生成密钥后,需要将公钥添加到GitHub账户。打开`id_rsa.pub`文件,复制内容,然后登录GitHub,在Settings的SSH and GPG keys部分添加新的SSH key。这一步可能需要注意公钥的正确性,确保没有多余的空格或遗漏。 然后,测试SSH连接是否成功。运行`ssh -T git@github.com`,如果收到欢迎信息,说明配置成功。如果仍然出现权限被拒绝,可能需要检查SSH代理是否运行。启动代理使用`eval $(ssh-agent -s)`,然后添加私钥`ssh-add ~/.ssh/id_rsa`。 如果问题依旧存在,可能需要检查Git的远程仓库地址是否正确。使用SSH地址而非HTTPS,可以通过`git remote set-url origin git@github.com:用户名/仓库名.git`来修改。 另外,引用[3]提到,如果已经生成并添加了公钥,但仍然有问题,可能需要检查文件权限。确保`.ssh`目录权限为700,私钥文件为600,使用`chmod 700 ~/.ssh`和`chmod 600 ~/.ssh/id_rsa`调整。 最后,如果所有步骤都正确但问题未解决,可能需要重新生成密钥并彻底删除旧密钥,确保没有冲突。同时,参考引用[4]的建议,确保SSH配置正确,避免路径问题影响认证。 总结步骤应该是:检查现有密钥→生成新密钥→添加到GitHub→测试连接→调整配置和权限。过程中需要仔细执行每一步,确保没有遗漏或错误操作。</think>### 分步解决GitHub权限被拒绝(Publickey)问题 #### **1. 检查SSH公钥是否存在** 在Git Bash中执行以下命令,查看是否已有公钥文件: ```bash cat ~/.ssh/id_rsa.pub ``` - 如果提示`No such file or directory`,说明需要生成新的密钥[^2]。 - 如果存在,跳过第2步,直接进入第3步。 --- #### **2. 生成新的SSH密钥** 运行以下命令生成密钥对(使用默认路径): ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` - 按三次回车(密码可以为空,路径保持默认`~/.ssh/id_rsa`)[^4]。 - 生成后再次运行`cat ~/.ssh/id_rsa.pub`获取公钥内容。 --- #### **3. 将公钥添加到GitHub账户** 1. 登录GitHub → Settings → **SSH and GPG keys** → **New SSH key**。 2. 将`id_rsa.pub`文件内容粘贴到Key字段,Title自定义(如“My PC”)。 3. 点击**Add SSH key**保存。 --- #### **4. 测试SSH连接** 运行以下命令验证配置: ```bash ssh -T git@github.com ``` - 成功会显示:`Hi [用户名]! You've successfully authenticated...`。 - 若仍报错,继续下一步[^3]。 --- #### **5. 检查SSH代理配置** 启动SSH代理并添加私钥: ```bash eval $(ssh-agent -s) # 启动代理 ssh-add ~/.ssh/id_rsa # 添加私钥 ``` --- #### **6. 检查Git远程仓库地址** 确保仓库地址使用SSH格式(而非HTTPS): ```bash git remote set-url origin git@github.com:用户名/仓库名.git ``` --- #### **7. 检查文件权限** 确保密钥文件权限正确: ```bash chmod 700 ~/.ssh # 目录权限 chmod 600 ~/.ssh/id_rsa # 私钥权限 ``` --- #### **8. 彻底重置SSH配置(可选)** 若问题仍未解决: 1. 删除`~/.ssh`文件夹。 2. 重新生成密钥并重复上述步骤[^4]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值