当前位置: 首页 > news >正文

告别密码和防火墙——将 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 密钥
    执行以下命令。过程中会提示你输入保存位置和密码,直接一路按回车键即可,无需设置密码。

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

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

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

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

  1. 显示并复制公钥
    在服务器上运行以下命令,它会打印出公钥的全部内容。

    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 成功“握手”。

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

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

  1. 进入你的项目目录

    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 命令进行切换。

    # 格式为 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

git pull

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

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

http://www.dtcms.com/a/572725.html

相关文章:

  • Fiddler抓包工具详解,HTTP/HTTPS抓包、代理设置与调试技巧一站式教程(含实战案例)
  • Go语言爬虫:采集百度热榜并将拼装后的json写入txt文件
  • 图模式分析:PyTorch Compile组件解析
  • Microsoft Fabric - 试一下在前端应用中使用 GraphQL API去连接Lakehouse
  • 测试套件缩减方法
  • Oracle SQL Developer设置打开表的时候如何是新窗口中打开
  • 新开传奇网站刚开一秒甘南网站设计公司
  • postman 安装教程
  • 网站建站流程图简单工程承包合同
  • 【Linux系统编程】进程概念(三)进程状态
  • 360极速浏览器 安装猫抓插件的方法
  • 面向对象(上)-递归方法的使用
  • PPPOE实验
  • 【LeetCode 经典题解】:队列与栈的双向模拟——从原理到代码详解
  • 学习笔记5
  • 多线程 忙等待和线程等待的区别
  • 网站建设运维合同汽车城网站建设方案
  • 建立网站需要什么设备网站制作对公司的作用
  • C++类与对象:从入门到精通
  • UniApp 全局通知功能实现
  • uni-app开发安卓app时控制屏幕常亮不息屏
  • uniapp 小程序引入 uview plus 框架,获得精美的UI框架
  • 在被窝里使用笔记本电脑,容易损坏键盘?
  • Unix Domain Socket:构建高效本地进程间通信的完整指南
  • 如何创建“国学助手”GPT?
  • AWS Elastic Beanstalk中安装tesseract5.3.4版本
  • 实战:用Elasticsearch构建爬虫数据搜索引擎
  • 微网站建设及微信公众号长春自助建站软件
  • 修改图片网站卖房app十大排行榜
  • python-爬虫之beautifulsoup