本篇介绍当使用 Git 推送本地代码至 Github 遇到连接失败的问题时的解决办法
failed to connect to 127.0.0.1 port 1080Windows
使用 cmd 输入
git config --global http.proxy
git config --global https.proxy显示如下
http://127.0.0.1:1080要将端口修改为目前网络的端口,在设置中查看网络代理的端口,我这里是 7890
使用 cmd 修改
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy https://127.0.0.1:7890修改后可再用上述命令查看是否修改成功,再次使用 git 可顺利完成
服务器(Linux)
1. 查看服务器网络端口
在连接 GitHub 时,通常使用 HTTPS 或 SSH 协议。首先,确认服务器的网络端口是否支持这两种协议。
可以使用 netstat 命令来查看服务器上开放的网络端口:
netstat -tuln
# 具体看某个端口
netstat -tuln | grep ':443'查看输出,特别关注以下端口:
- 443:支持 HTTPS 连接。
- 22: 支持 SSH 协议。
2. 使用 HTTPS 时
如果看到这样的结果:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN或
tcp6 0 0 :::443 :::* LISTEN代表 443 端口支持连接,此时使用与 Windows 相同的方法,将 http.proxy 等代理设置好即可。
3. 使用 SSH 时
SSH 是 GitHub 推荐的安全连接方式。以下是通过 SSH 连接的完整步骤。
3.1 创建密钥或使用已有密钥
查看现有的 SSH 密钥
如果你已经生成过 SSH 密钥,可以直接使用现有的密钥文件。首先,检查是否已经有 id_rsa 和 id_rsa.pub 文件:
ls ~/.ssh/id_rsa如果文件存在,说明你已有密钥,可以跳过密钥生成步骤。
生成新的 SSH 密钥对
如果没有密钥,或者你希望生成一对新的密钥,可以使用以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"your_email@example.com是你在 GitHub 上注册的邮箱。- 你可以按回车接受默认的密钥存储位置
~/.ssh/id_rsa。
生成密钥后,默认生成两个文件:id_rsa(私钥)和 id_rsa.pub(公钥)。
3.2 在 GitHub 添加公钥,检查连接状态
添加公钥到 GitHub
将公钥 id_rsa.pub 内容复制到 GitHub 上:
-
查看公钥内容:
cat ~/.ssh/id_rsa.pub -
登录 GitHub,进入 Settings > SSH and GPG keys,点击 New SSH key。
-
粘贴公钥内容并保存。
测试 SSH 连接
确认密钥已正确配置,可以使用以下命令测试 SSH 连接:
ssh -T git@github.com如果配置成功,你会看到如下输出:
Hi xuyf-web! You've successfully authenticated, but GitHub does not provide shell access.
这表示你的 SSH 密钥已正确配置,并成功连接到 GitHub。
3.3 在服务器创建使用 SSH 连接的库,或将已有库修改为 SSH 连接
创建新的仓库并使用 SSH 连接
-
初始化新仓库:
mkdir new-repository cd new-repository git init -
设置远程仓库 URL 为 SSH:
git remote add origin git@github.com:xuyf-web/new-repository.git -
推送代码到 GitHub:
git push -u origin main
这样,你的仓库将通过 SSH 连接到 GitHub。
将已有仓库修改为 SSH 连接
如果你的仓库原来使用的是 HTTPS 连接,想要改为使用 SSH 连接,可以使用以下命令:
-
查看当前远程仓库 URL:
git remote -v -
修改远程仓库 URL 为 SSH 格式:
git remote set-url origin git@github.com:xuyf-web/repository.git -
验证修改是否成功:
git remote -v输出应该显示使用 SSH 协议的 URL:
origin git@github.com:xuyf-web/repository.git (fetch) origin git@github.com:xuyf-web/repository.git (push) -
推送代码到 GitHub:
git push origin main