使用 ssh key 时遇到的一些问题

今天打开编辑软件照常 coding,然后提交代码

提交代码完毕之后,我就扭头去看别的界面了,结果突然软件弹出窗口,提醒我向 github 仓库提交代码失败

我???一脸懵逼,怎么回事,前几天我还可以提交成功来着,今天就不行了?

盲猜大概率是 ssh key 的问题,所以直接删除了 /.ssh 整个目录,然后通过命令 ssh-keygen -t rsa -C "[email protected]" 生成新的公钥、私钥,然后将公钥添加到 github 账户中

寻思这样总可以了吧,ssh -T [email protected] 看一下,是不是配置成功了

结果并没有,运行这个命令之后,一点反应都没有

查了一些解决方案,说是可能权限不够,那就给这些文件一一提权
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

提权完毕之后,再次尝试通过 ssh 连接 github 网站,结果报错 Connection closed by 127.0.0.1 port 7890

正常端口应该是 22 才对,结果说 7890 端口,我想到可能是因为我开了代理

但我又经常用,不可能提交代码的时候,把代理退出一下,提交完再打开代理软件,想想就觉得头疼,况且以前开着代理,也是可以提交代码到仓库的

搜索到的解决方案是,可以添加 config 文件,具体文件内容如下:

Host github.com
  HostName ssh.github.com
  User git
  Port 22

添加完毕之后,再运行命令 ssh -T [email protected] 即可,如果 ./ssh 目录下没有 known_hosts 文件的话,会遇到提示:

The authenticity of host 'ssh.github.com (20.205.243.160)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入 yes 即可

至此,问题解决

写这篇文章时,我想了想,以前生成密钥的时候,也没这么麻烦呀?这次是因为什么导致的

大概率是因为我直接删除了整个 ./ssh 目录叭 😅

所以 config 文件、known_hosts 文件都没有了,而这些文件,如果自己没有注意过的话,是不会想到要自己去生成配置一下的(可能是第一次生成密钥时,默认就会有,只是我当时手快,被我全删了)

以后如果再出现这种情况,我就单独删和密钥有关的文件,其他文件就不用动了

以上,感谢您的阅读

发布时间:2025-01-01