1、检查现有的 SSH 密钥
首先,检查你是否已经有一个 SSH 密钥。打开终端(Linux 或 macOS)或 Git Bash(Windows),然后运行以下命令:
ls -al ~/.ssh
这会列出 .ssh
目录中的文件。如果你看到类似 id_rsa
和 id_rsa.pub
的文件,那么你已经有 SSH 密钥了。
2、生成新的 SSH 密钥
如果你没有现有的 SSH 密钥,或者想创建一个新的,可以使用以下命令生成:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
这里,your_email@example.com
是你在 GitHub 上注册的电子邮件地址。
- 按 Enter 接受默认的文件位置(通常是
~/.ssh/id_rsa
)。- 你可以为 SSH 密钥设置一个密码(passphrase),但这不是必须的。如果你选择设置密码,每次使用 SSH 密钥时都需要输入它。
3、添加 SSH 密钥到 SSH 代理
为了使用 SSH 密钥,你需要将其添加到 SSH 代理中。首先,确保 SSH 代理正在运行
eval "$(ssh-agent -s)"
然后,将你的 SSH 私钥添加到 SSH 代理中:
ssh-add ~/.ssh/id_rsa
4、将 SSH 公钥添加到 GitHub
你需要将生成的公钥(.pub
文件)添加到 GitHub 账户中。
cat ~/.ssh/id_rsa.pub
这将显示公钥的内容,你可以将其复制。
-
登录到你的 GitHub 账户,进入 Settings > SSH and GPG keys。
-
点击 New SSH key 按钮。
-
在 Title 字段中,输入一个描述性的标题(例如“My Laptop”)。
-
在 Key 字段中,粘贴你刚刚复制的公钥。
-
点击 Add SSH key 保存。
5、测试 SSH 连接
测试 SSH 连接是否正常工作:
ssh -T git@github.com
第一次连接到 GitHub 时如果一切正常,SSH 客户端会提示你是否信任连接的主机。这是因为 SSH 为了安全起见,会在第一次连接时生成并保存该主机的指纹(fingerprint)。你应该会看到类似以下的提示消息:
The authenticity of host 'github.com (IP_ADDRESS)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
在提示符下输入 yes
,然后按回车。提示如下信息,表示连接成功。
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
“Connection refused”错误解决
出现这个问一般都是如下结果
- 防火墙或网络问题:某些网络环境可能会阻止 SSH 连接(端口 22)。
- SSH 代理问题:SSH 代理没有正确配置。
- GitHub 服务器问题:虽然不常见,但 GitHub 服务器可能出现问题。
1. 检查网络连接
确保你的网络连接正常,并且没有防火墙或代理服务器阻止 SSH 连接。你可以尝试访问其他网站或服务来确认网络连接是否正常。
2. 使用 HTTPS 代替 SSH
如果由于网络限制无法使用 SSH,你可以改用 HTTPS 克隆和推送代码。例如:
git clone https://github.com/username/repository.git
3. 使用备用 SSH 端口
GitHub 也支持通过 HTTPS 协议隧道的 SSH 连接。你可以配置 Git 使用端口 443 而不是 22 来进行 SSH 连接。
编辑或创建 ~/.ssh/config
文件,添加以下内容:
Host github.com
HostName ssh.github.com
Port 443
User git
保存文件后,再次尝试连接:
ssh -T git@github.com
检查 SSH 代理
确保 SSH 代理正在运行并且你的私钥已经添加到代理中:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
5. 检查 SSH 密钥
确保你的 SSH 密钥已经正确添加到 GitHub 账户中。你可以重新生成密钥并重新添加:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-add ~/.ssh/id_rsa
然后将新的公钥添加到 GitHub:
cat ~/.ssh/id_rsa.pub
复制输出的公钥并添加到 GitHub 账户的 SSH and GPG keys 部分。
6. 检查 DNS 解析
确保你的 DNS 解析正常,可以使用 ping
或 nslookup
命令检查:
ping github.com
nslookup github.com
7. 重置 SSH 配置
有时候重置 SSH 配置文件可以解决问题。删除 ~/.ssh/known_hosts
文件,然后再次尝试连接:
rm ~/.ssh/known_hosts
ssh -T git@github.com
8. 使用代理
如果你的网络需要通过代理服务器访问外部资源,确保你的 SSH 客户端配置了正确的代理设置。你可以在 ~/.ssh/config
文件中添加代理设置,例如:
Host github.com
HostName github.com
Port 22
User git
ProxyCommand nc -X connect -x your_proxy_host:your_proxy_port %h %p