走 ssh 协议连接 github 时通常需要配置 ssh 的 config 文件。
一般来说配置文件有以下几个字段
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_rsa
Host
主机配置的标识符。
HostName
:主机的地址或域名。
User
:登录主机使用的用户名。
IdentityFile
:用于身份验证的私钥文件路径。
当 github.com
域名解析出现问题时,可以在 https://www.ipaddress.com/ 查找 ssh.github.com
对应的地址(假定为 140.82.xxx.xx),替换 HostName
字段的内容。
然后在命令行界面中用 ssh -T ssh@github.com
测试连接。
假若回显
ssh: connect to host 140.82.xxx.xx port 22: Connection timed out
则可以尝试强制使用 443 端口,即 ssh -T -p 443 git@github.com
假若连接成功,则回显
Hi [YOUR_USERNAME]! You've successfully authenticated, but GitHub does not provide shell access.
此时,记得将 config 做出进一步修改。
最方便的做法是直接替换。
Host github.com
HostName 140.82.xxx.xx # modified
User git
IdentityFile ~/.ssh/github_rsa
或者可以另外新建配置
# original (and temporarily unavailable)
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_rsa
# added
Host ssh.github.com
HostName 140.82.xxx.xx
User git
IdentityFile ~/.ssh/github_rsa
Port 443
PreferredAuthentications publickey
TCPKeepAlive yes
此时通过 ssh -T git@ssh.github.com
即可检测连接。但会带来问题,即在 git 使用时会略有麻烦。因为Host
标识符发生了变化(从 github.com
变为了 ssh.github.com
)