ssh: 连接到主机 github.com 端口 22 失败:连接被拒绝

所以我按照如何将SSH密钥添加到GitHub的指南进行操作,并在GitHub和SSH代理中添加了一个带有密码的新SSH密钥。现在,如果我按照指南中描述的运行ssh -T git@github.com来测试是否正确设置了一切,它甚至不会提示我输入密码,而是立即返回ssh: connect to host github.com port 22: Connection refused。我已经安装了openssh-serveropenssh-client,并且SSH服务正在运行。

the error

帮助将不胜感激。
更新:当我尝试从朋友的GitLab实例克隆一个我有写权限的存储库时,它会抛出相同的错误。看起来这是一个与SSH有关的问题,而不是密钥的问题。(我已经将它们添加到实例中。)

你不能使用 ssh -T git@github.com。GitHub不提供shell访问。 - A.B.
1是的,没错:% ssh -T git@github.com 嗨<你的用户名>!你已经成功验证身份,但GitHub不提供shell访问权限。 - A.B.
为此,您应该重新表述您的问题。 - A.B.
检查 ssh -Tv git@github.com 的输出 - Shagun Sodhani
这篇帖子相关:https://stackoverflow.com/questions/7953806/github-ssh-via-public-wifi-port-22-blocked - exchange
在这里,将配置为端口443对我起作用。 - junior
如果您使用cPanel,这是一个相关但略微离题的答案。运行ssh -Tv git@github.com命令,将显示的远程IP地址(对我来说是140.82.121.4)添加到端口22的SSH授权中,这样您就可以使用端口22而不需要切换到443端口。 - Jono
2个回答

你试过使用443端口,并添加ssh.子域名前缀吗?
这个命令将进行测试。由于不支持shell,你应该会收到一个错误提示。
ssh -T -p 443 git@ssh.github.com

然后,您可以使用完整的URL来指定项目路径,请参阅Stack Overflow答案以获取详细信息。
ssh://git@ssh.github.com:443/yourname/reponame.git

推荐按照评论中建议的方式设置~/.ssh/config文件:
# GitHub Account
Host github.com
HostName ssh.github.com
Port 443
PreferredAuthentications publickey
IdentityFile <path to your private ssh key>

这有助于确认至少可以与 GitHub 进行连接。$ ssh -T -p 443 git@ssh.github.com 无法验证主机“[ssh.github.com]:443 ([192.30.253.123]:443)”的真实性。 RSA 密钥指纹为 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8。 您确定要继续连接吗(是/否)?是 警告:永久地将“[ssh.github.com]:443,[192.30.253.123]:443”(RSA)添加到已知主机列表中。 你好,xcaliber!您已成功验证身份,但 GitHub 不提供 shell 访问。 - Bhoom Suktitipat
5谢谢!这对我有用,并让我意识到我还需要将这个添加到我的ssh配置文件中。#GitHub帐户主机 github.com HostName ssh.github.com Port 443 PreferredAuthentications publickey IdentityFile <path to your private ssh key> *注意HostName和Port - Brandon Manchester
他在公司的防火墙后面,这对他非常有帮助。 - aqm

如果你收到一个连接被拒绝的错误,意味着你实际上收到了一个数据包,其中说明你的目标不接受你的连接。 这可能有几种情况:
1. github.com宕机(可能性不大,但你可以随时在https://status.github.com/上检查他们的状态) 2. 你在github.com上有一个无效的IP地址(手动输入在/etc/hosts或者你的解析器中),它会阻止来自至少你的IP地址的ssh连接 3. 在通往github.com的路径上有一个阻止ssh流量的防火墙(例如本地防火墙或企业防火墙)