解决克隆Github源码库时的Permission denied 问题
目录
一、问题描述
二、问题原因
(1)用于测试SSH连接
(2)查看密钥文件是否存在
(3)如果没有SSH密钥文件
三、测试
(1)测试连接是否成功
(2)测试仓库代码是否可以成功下载
一、问题描述
以TC-LIF神经元模型为例,git clone代码库的时候提示如下:
git clone git@github.com:ZhangShimin1/TC-LIF.git
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
二、问题原因
大概率是SSH密钥没有配置好,可以按照下述过程逐个排查。
(1)用于测试SSH连接
输入命令ssh -T git@github.com:
-
如果返回类似“Hi username! You've successfully authenticated, but GitHub does not provide shell access.”的消息,说明SSH密钥配置正确。
-
如果返回“Permission denied (publickey).”,说明SSH密钥没有正确添加到GitHub账户。
(2)查看密钥文件是否存在
(通常文件名为id_rsa.pub
或id_ed25519.pub
)
(3)如果没有SSH密钥文件
可以使用命令ssh-keygen -t rsa -b 4096
生成新的SSH密钥(一路按回车键使用默认设置即可)
此时可见/.ssh文件中新增的密钥文件。
(4)添加到github中
① 打开生成的公钥文件(如id_rsa.pub
),复制其中的内容。
②登录GitHub账户,点击右上角的头像,选择“Settings”(设置)。
③ 在左侧菜单中选择“SSH and GPG keys”(SSH和GPG密钥)。
④ 点击“New SSH key”(新建SSH密钥)按钮,输入一个标题,将复制的公钥内容粘贴到“Key”框中,然后点击“Add SSH key”(添加SSH密钥)按钮。
三、测试
(1)测试连接是否成功
配置完成后再输入命令ssh -T git@github.com
测试,此时显示连接成功。
(2)测试仓库代码是否可以成功下载
输入命令git clone git@github.com:ZhangShimin1/TC-LIF.git,此时显示可以正确clone源码。
最后,我感觉我应该之前遇到过同等问题,但都是在新服务器的个人账号下出现的。
今天再次遇到这个问题,是因为我程序运行在docker中,好像每次都要重新配置新的docker容器的SSH连接密钥。暂时先治标不治本,懒得再折腾了,等后续遇到再了解是否可以直接设置生成的新docker容器。