从零开始:配置 SSH 并将 Git 项目推送到 GitHub(windows)
项目推送到github总是遇到如下问题:
fatal: unable to access 'https://github.com/lw1725908379/power_supply.git/': Failed to connect to github.com port 443 after 21060 ms: Timed out
当你使用 HTTPS 协议推送代码到 GitHub 时,Git 尝试在端口 443 上与 GitHub 的服务器建立连接。然而,有时网络环境的限制或防火墙设置可能会阻止这种连接,导致连接超时错误。
通过配置 SSH,你实际上是在使用 SSH 协议与 GitHub 通信,而不是 HTTPS。SSH 协议默认使用端口 22,这通常不受网络限制。因此,当你将远程仓库的 URL 修改为 SSH 格式后,Git 将尝试通过 SSH 连接到 GitHub,从而避免了可能存在的网络连接问题。
配置 SSH 并推送 Git 项目到 GitHub
1. 安装和配置 SSH
生成 SSH 密钥
首先,使用以下命令生成一个新的 SSH 密钥:
ssh-keygen -t rsa -b 4096 -C "your email@gmail.com"
解释:
-t rsa
:指定密钥类型为 RSA。-b 4096
:指定密钥长度为 4096 位。-C "your email@gmail.com"
:使用你的邮箱作为注释。
按照提示保存密钥和设置密码
(base) E:\WORKS\py\projects\power_supply>ssh-keygen -t rsa -b 4096 -C "your email@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\17259/.ssh/id_rsa):
C:\Users\17259/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\17259/.ssh/id_rsa
Your public key has been saved in C:\Users\17259/.ssh/id_rsa.pub
The key fingerprint is:
The key's randomart image is:
+---[RSA 4096]----+
| . +*|
| =o+|
| o =.+o|
| . . = *Eo|
| . S o..=.+ |
| . . * OOo |
| + B=== |
| . oo B +|
| ..=ooo|
+----[SHA256]-----+
添加 SSH 公钥到 GitHub
显示 SSH 公钥并复制:
cat ~/.ssh/id_rsa.pub
或者直接找当 'id_rsa.pub'文件复制,默认存储在C:\Users\用户名/.ssh/id_rsa.pub
将显示的公钥复制到 GitHub 账户的 SSH 设置中:
- 登录 GitHub。
- 进入 Settings > SSH and GPG keys > New SSH key。
- 粘贴你的公钥,并保存。
2. 配置 Git 使用 SSH 远程仓库
更改远程仓库 URL 为 SSH
在你的项目目录中,打开终端(Terminal)或 Git Bash,执行以下命令:
git remote set-url origin git@github.com:lw1725908379/power_supply.git
确认远程仓库 URL 已更改
git remote -v
输出应类似于:
origin git@github.com:lw1725908379/power_supply.git (fetch)
origin git@github.com:lw1725908379/power_supply.git (push)
3. 推送代码到 GitHub
添加并提交更改
git add .
git commit -m "Test SSH setup"
推送更改
git push origin main
处理 SSH 主机验证提示
在首次通过 SSH 连接到 GitHub 时,你会看到以下提示:
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入 yes
并按回车键。
处理推送问题
如果遇到 error: src refspec main does not match any
错误,说明本地没有 main
分支。可以创建并切换到 main
分支:
git checkout -b main
git push --set-upstream origin main
通过以上步骤,你应该能够成功配置 SSH 密钥,并通过 SSH 将代码推送到 GitHub。如果遇到其他问题,可以检查 SSH 密钥配置和网络连接是否正常。