从零开始:配置 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 设置中:

  1. 登录 GitHub。
  2. 进入 Settings > SSH and GPG keys > New SSH key
  3. 粘贴你的公钥,并保存。

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 密钥配置和网络连接是否正常。

posted @ 2024-05-31 18:20  菠萝包与冰美式  阅读(69)  评论(0编辑  收藏  举报