为Github配置SSH登录方式

Github宣布2021年8月13日起不再支持密码验证,在这里简单记录一下为Github配置SSH登录过程中踩到的坑

配置SSH公钥

生成SSH Key

1
ssh-keygen -t rsa -C "xxx@xxx.com" 

查看SSH公钥

查看并复制SSH公钥

1
2
$ cd ~/.ssh
$ cat id_rsa.pub | clip

粘贴SSH公钥

进入Github网页,依次选择Setting-SSH and GPG keys-New SSH key,粘贴并保存

测试

添加GitHub的SSH密钥指纹

首次进行SSH连接时由于主机不被信任,会收到以下提示

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

此时输入yes即可继续。

若为确保安全,可在~/.ssh/下新建known_hosts文件,将GitHub的 SSH 密钥指纹中内容存入其中,以避免手动验证 GitHub 主机

1
ssh -T git@github.com

其他

解决22端口被占用问题

报错提示

1
ssh: connect to host github.com port 22: Connection timed out

解决方式

检查代理或防火墙配置情况,或参照下文将SSH端口改为443。我遇到的原因是 SteamCommunity302 中开启了对GitHub的反代。

为SSH设置代理

新建或修改~/.ssh/config

1
2
3
4
5
6
7
8
Host github.com                                                                                                          
Hostname ssh.github.com
Port 443
User git
# linux
ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
# windows
ProxyCommand connect -S 127.0.0.1:7890 %h %p
--- 本文结束  The End ---