告别密码和防火墙——将 Git 仓库从 HTTPS 切换到 SSH 连接

你是否遇到了这些问题?
  • 每次 git pullgit push 时,总被要求输入用户名和密码(或令牌)?
  • 在某些服务器上,可以 ping 通 GitHub,但执行 Git 操作时却提示 Connection timed out (连接超时)?

如果你遇到了以上任一情况,那么将你的仓库连接方式从 HTTPS 切换到 SSH,就是一劳永逸的最佳解决方案。

为什么 SSH 更好?
  1. 更便捷: 一次性配置,永久免密。SSH 使用密钥对进行认证,不再需要反复输入凭据。
  2. 更安全: SSH 密钥通常比密码更难破解,并且你可以随时撤销某个设备的访问权限。
  3. 更稳定: SSH 使用 22 端口,而 HTTPS 使用 443 端口。很多服务器的防火墙会限制 443 端口的出站访问,但几乎所有服务器都默认开放 22 端口(因为 SSH 登录本身就需要它),可以轻松绕过网络限制。

切换步骤详解

第一步:在服务器上生成 SSH 密钥对

我们需要为服务器创建一个独一无二的"数字身份证",即 SSH 密钥对(一个公钥,一个私钥)。

  1. 检查是否已存在密钥

    运行 ls -la ~/.ssh/id_rsa.pub。如果看到文件名,说明密钥已存在,可直接跳到第二步。如果提示 No such file or directory,则需要创建。

  2. 生成新的 SSH 密钥

    执行以下命令。过程中会提示你输入保存位置和密码,直接一路按回车键即可,无需设置密码。

    bash 复制代码
    # 使用你的邮箱作为标签
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

    这将在 ~/.ssh/ 目录下创建 id_rsa (私钥) 和 id_rsa.pub (公钥) 两个文件。

第二步:将服务器公钥 🔑 添加到 GitHub

这一步是让 GitHub 认识并信任你的服务器。

  1. 显示并复制公钥

    在服务器上运行以下命令,它会打印出公钥的全部内容。

    bash 复制代码
    cat ~/.ssh/id_rsa.pub

    完整地复制 屏幕上显示的、以 ssh-rsa 开头的所有文本。

  2. 添加到 GitHub

    • 在浏览器中登录你的 GitHub 账户。
    • 点击右上角头像 → Settings
    • 在左侧菜单中,选择 SSH and GPG keys
    • 点击绿色的 New SSH key 按钮。
    • Title : 给这个密钥起一个你能识别的名字,比如 My Production Server
    • Key : 将刚才复制的完整公钥内容粘贴到这个大文本框中。
    • 点击 Add SSH key 完成添加。
第三步:测试 SSH 连接 🔗

在修改项目配置前,先验证一下服务器能否与 GitHub 成功"握手"。

bash 复制代码
ssh -T git@github.com
  • 首次连接 :你很可能会看到一个关于主机真实性的提示。这是正常的,输入 yes 并按回车。
  • 成功信息 :如果一切顺利,你会看到 Hi <你的用户名>! You've successfully authenticated... 的欢迎语。这表示你的 SSH 通道已经畅通无阻!
第四步:修改项目的远程仓库地址

现在,我们把你本地项目的"联络地址"从 HTTPS 网址换成 SSH 地址。

  1. 进入你的项目目录

    bash 复制代码
    cd /path/to/your/repository
    # 比如:cd /www/wwwroot/www.site.cn
  2. 查看当前的远程地址

    运行 git remote -v,你会看到它现在是 https:// 开头的。

    复制代码
    origin  https://github.com/username/site.git (fetch)
    origin  https://github.com/username/site.git (push)
  3. 执行修改命令

    使用 git remote set-url 命令进行切换。

    bash 复制代码
    # 格式为 git@github.com:用户名/仓库名.git
    git remote set-url origin git@github.com:username/site.git
  4. 再次验证

    再运行一次 git remote -v,确认地址已经成功更新。

    复制代码
    origin  git@github.com:username/site.git (fetch)
    origin  git@github.com:username/site.git (push)
第五步:成功!✅

现在,你的仓库已经完全切换到了 SSH 模式。试着运行一次 git pull

bash 复制代码
git pull

你会发现,它不再需要你输入任何用户名或密码,也不会再出现连接超时的错误,直接就开始了数据传输。

恭喜你,从此享受丝滑的 Git 操作体验吧!

相关推荐
最贪吃的虎6 小时前
GitHub推送又超时了?试试SSH
运维·ssh·github
smachao6 小时前
Redis Desktop Manager(Redis可视化工具)安装及使用详细教程
redis·git·bootstrap
szcsun58 小时前
git的常用命令
git
jian110588 小时前
android studio 解决git用户名和用户邮箱不一致的问题
git
jian110588 小时前
Mac git配置账号和邮箱,可以修改
git·macos
wanderist.10 小时前
【故障复盘】VS Code Remote-SSH 连接失败:ZeroTier 链路异常与 GLIBC 版本冲突双重坑
运维·ssh
笨笨饿11 小时前
博客目录框架
c语言·开发语言·arm开发·git·嵌入式硬件·神经网络·编辑器
白玉cfc11 小时前
git协作开发
git·团队开发·远程工作
xyh4ck11 小时前
Claude Code for VSCode:Remote SSH 环境下的免登录问题分析
ide·vscode·ssh
2501_9151063212 小时前
iOS 多技术栈混淆实现,跨平台 App 混淆拆解与组合
android·ios·小程序·https·uni-app·iphone·webview