最近两周在用 TortoiseGit 从远端拉取项目,以及从本地向远端推送项目时,总会报如下错误
因为多尝试几次又可以拉取和推送了(使用 Git 客户端也是这样),以为是因为最近疫情的影响,大家都宅在家里,所以网速比较慢,就没把这当回事。
但公司的电脑一直没有这个问题,这让我觉得可能不是因为网速。果然,踏破铁鞋无觅处,今天终于把这个问题给解决了。
第一步
在自己公钥的路径下,新建一个 config 文件,注意没有后缀名(之前我并没有 config 文件,这个也是新建的,如果你之前就有,请无视这句话)。
然后打开该文件,输入如下内容,然后保存文件
Host github.com
User "这里填自己注册 github 时的邮箱地址"
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
第二步
打开 Git 客户端,输入 ssh -T [email protected]
命令来验证一下是否连接成功
如果你的也出现了这段话,恭喜你,你的问题也解决了。
以下属于扩展内容,感兴趣的可以看看
扩展一:
先对第一步 config 文件中的内容做下简单说明
名称 | 解释说明 |
---|---|
Host github.com | 服务器地址为 github 地址 |
Hostname ssh.github.com | 服务器地址为 github 地址 |
PreferredAuthentications publickey | 采用公匙 |
IdentityFile ~/.ssh/id_rsa | 公匙文件路径 |
Port 443 | 修改端口为 443 |
扩展二:
关于第二步的 You’ve successfully authenticated, but GitHub does not provide shell access 这段话,我也查了一下资料
这段话翻译成中文是:您已成功通过身份验证,但是 GitHub 不提供 Shell 访问权限。
首先,这不是一个错误,而是 github 给的一句提示语,ssh -T 的意思是不显示终端,只显示连接成功信息。
虽然我们无法使用 ssh 协议直接登录 github,但当我们在使用 ssh 协议连接到自己或者其它服务器时,本地终端会显示命令提示符,我们可以在上面输入 ls 等命令进行操作,相当于在 github 服务器上建立了一个伪终端。
如果这篇博客有幸帮到了您,欢迎点击下方链接,和更多志同道合的伙伴一起交流,一起进步。
结束语