返回顶部
分享到

Git远程连接之SSH与HTTPS克隆协议

相关其他 来源:互联网 作者:佚名 发布时间:2026-04-04 16:01:50 人浏览
摘要

在日常开发中,git clone是我们最常执行的命令之一。但你是否曾思考过,在https://...和git@...这两种不同的URL背后,究竟隐藏着怎样的技术原理和安全考量?选择正确的连接方式,不仅能提升你

在日常开发中,git clone 是我们最常执行的命令之一。但你是否曾思考过,在 https://... 和 git@... 这两种不同的URL背后,究竟隐藏着怎样的技术原理和安全考量?选择正确的连接方式,不仅能提升你的工作效率,更能为你的代码资产筑起一道坚固的安全防线。

一、HTTPS协议

HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,通过SSL/TLS加密层来保护数据传输。

1. 工作原理

当你使用HTTPS URL(如 https://github.com/username/repo.git)克隆仓库时,Git会通过标准的443端口与服务器通信。身份验证不再依赖账户密码,而是使用个人访问令牌(Personal Access Token, PAT)。

2. 配置步骤

步骤1:生成个人访问令牌(PAT)

  1. 登录你的Git托管平台(如GitHub或GitLab)。
  2. 进入 Settings > Developer settings > Personal access tokens (GitHub) 或 Preferences > Access Tokens (GitLab)。
  3. 点击 Generate new token,填写一个描述性的名称(如 My Laptop Git)。
  4. 关键:勾选所需的权限范围。对于基本的代码推送和拉取,通常需要 repo (GitHub) 或 read_repository / write_repository (GitLab) 权限。
  5. 点击 Generate token,并立即复制生成的令牌。这个令牌只会显示一次!

步骤2:克隆仓库

1

git clone https://github.com/your-username/your-repo.git

系统会提示你输入用户名和密码:

  • Username: 你的Git托管平台用户名。
  • Password: 粘贴你刚刚生成的PAT(输入时不可见)。

步骤3:配置凭证缓存(可选但推荐)

为了避免每次操作都输入PAT,可以配置Git缓存凭证。

1

2

3

4

5

6

7

8

# 缓存凭证1小时(3600秒)

git config --global credential.helper 'cache --timeout=3600'

 

# 在Windows上,使用内置的管理器(推荐)

git config --global credential.helper manager-core

 

# 在macOS上,使用钥匙串

git config --global credential.helper osxkeychain

3. 优点与缺点

优点:

  • 简单直观:无需复杂的密钥管理,对新手友好。
  • 网络兼容性好:使用标准的443端口,几乎不会被企业防火墙拦截。
  • 匿名克隆:任何人都可以克隆公开仓库,无需任何认证。

缺点:

  • 安全性依赖Token管理:如果PAT泄露,风险较高。
  • 操作略显繁琐:即使有缓存,Token过期或更换设备后仍需重新配置。

二、SSH协议:高效安全的专业之选

SSH(Secure Shell)是一种强大的网络协议,用于安全地访问远程服务器。在Git中,它通过非对称加密技术实现免密认证。

1. 工作原理

SSH的核心是公钥-私钥对。你将公钥上传到Git服务器,而私钥安全地保存在本地。当进行Git操作时,服务器会向你的本地客户端发起挑战,只有持有正确私钥的客户端才能成功响应,从而完成身份验证。

2. 配置步骤

步骤1:检查现有SSH密钥

首先,看看你是否已经存在SSH密钥。

1

ls -al ~/.ssh

如果看到 id_rsa 和 id_rsa.pub 或 id_ed25519 和 id_ed25519.pub 文件,说明已有密钥。你可以复用它们,也可以生成新的。

步骤2:生成新的SSH密钥对

这是最关键的一步,务必理解每个参数的含义。

1

ssh-keygen -t ed25519 -C "your_email@example.com"

-t: 指定加密算法。

  • ed25519:强烈推荐。这是一种现代的椭圆曲线算法,速度快、安全性高、密钥短。
  • rsa:传统算法,兼容性最好。如果必须使用,请指定 -b 4096 以获得足够强度(ssh-keygen -t rsa -b 4096 -C "your_email@example.com")。

-C: 添加注释。通常是你的邮箱,用于在Git平台上标识此密钥的用途(如“Work Laptop”)。

执行命令后,系统会提示你:

  1. Enter file in which to save the key: 直接回车使用默认路径 ~/.ssh/id_ed25519。
  2. Enter passphrase: 建议设置一个密码短语。这为你的私钥增加了第二层保护,即使文件被盗也无法直接使用。

步骤3:启动SSH代理并添加私钥

SSH代理(ssh-agent)可以帮助你管理私钥和其密码短语。

1

2

3

4

5

6

# 启动ssh-agent

eval "$(ssh-agent -s)"

 

# 将你的私钥添加到ssh-agent

ssh-add ~/.ssh/id_ed25519

# 如果设置了密码短语,此时会要求你输入一次

步骤4:将公钥添加到Git账户

复制公钥内容:

1

2

cat ~/.ssh/id_ed25519.pub

# 或使用剪贴板命令(macOS: pbcopy, Windows: clip)

登录Git平台,进入 Settings > SSH and GPG keys。

点击 New SSH key,粘贴公钥内容,并给它一个有意义的标题(如“MacBook Pro 2026”),然后点击 Add SSH key。

步骤5:测试SSH连接

1

2

ssh -T git@github.com

# 对于GitLab: ssh -T git@gitlab.com

如果看到类似 Hi username! You've successfully authenticated... 的消息,恭喜你,配置成功!

步骤6:使用SSH克隆仓库

在仓库页面,复制 SSH 地址(格式为 git@github.com:username/repo.git),然后执行:

1

git clone git@github.com:your-username/your-repo.git

此后,所有 git push 和 git pull 操作都将无需任何凭证输入。

3. 优点与缺点

优点:

  • 极致便捷:一次配置,永久免密。
  • 顶级安全:基于非对称加密,私钥永不离开你的机器。
  • 自动化友好:非常适合CI/CD流水线和自动化脚本。

缺点:

  • 初始配置稍复杂:对初学者有一定门槛。
  • 网络限制:默认使用22端口,可能被某些严格的企业防火墙阻止。

三、高级场景:多账号管理

如果你同时拥有个人GitHub账号和公司GitLab账号,可以通过配置 ~/.ssh/config 文件来完美解决。

为不同账号生成不同的密钥对:

1

2

ssh-keygen -t ed25519 -C "personal@email.com" -f ~/.ssh/id_ed25519_personal

ssh-keygen -t ed25519 -C "work@email.com" -f ~/.ssh/id_ed25519_work

编辑 ~/.ssh/config 文件(若不存在则创建):

1

2

3

4

5

6

7

8

9

10

# 个人GitHub账户

Host github-personal

  HostName github.com

  User git

  IdentityFile ~/.ssh/id_ed25519_personal

# 公司GitLab账户

Host gitlab-work

  HostName gitlab.com

  User git

  IdentityFile ~/.ssh/id_ed25519_work

克隆仓库时,使用自定义的Host别名:

1

2

3

4

5

# 克隆个人项目

git clone git@github-personal:your-username/your-repo.git

 

# 克隆公司项目

git clone git@gitlab-work:company/project.git

四、常见问题与注意事项

注意事项1:私钥安全

~/.ssh 目录及其下的私钥文件权限必须严格。确保目录权限为 700 (drwx------),私钥文件权限为 600 (-rw-------)。可通过 chmod 700 ~/.ssh 和 chmod 600 ~/.ssh/id_ed25519 设置。

注意事项2:首次SSH连接

第一次通过SSH连接新主机时,终端会提示你确认主机的指纹(fingerprint)。请务必核对官方文档提供的指纹信息,以防止中间人攻击。

如何切换已有仓库的协议?

如果你已用HTTPS克隆了仓库,想切换到SSH,只需更改远程URL:

1

2

3

4

5

# 查看当前远程URL

git remote -v

 

# 更改为SSH URL

git remote set-url origin git@github.com:username/repo.git

五、总结与决策指南

特性 HTTPS SSH
上手难度 ??☆ (简单) ??? (中等)
日常便捷性 ??☆ (需Token) ??? (完全免密)
安全性 ??☆ (依赖Token) ??? (非对称加密)
网络穿透性 ??? (443端口) ??☆ (22端口可能被封)
适用人群 初学者、临时用户、受限网络环境 专业开发者、长期使用者、自动化场景

最终建议:

  • 如果你是专业开发者,并且追求高效、安全的工作流,请毫不犹豫地选择SSH。花半小时学习配置,将为你节省无数个未来的时间。
  • 如果你只是偶尔克隆一个开源项目,或者身处一个严格限制22端口的网络环境中,HTTPS是更省心的选择。

版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Git远程连接之SSH与HTTPS克隆协议
    在日常开发中,git clone是我们最常执行的命令之一。但你是否曾思考过,在https://...和git@...这两种不同的URL背后,究竟隐藏着怎样的技术原
  • win和mac安装以及使用git

    win和mac安装以及使用git
    win安装与使用git 首先可以在官网(下载速度慢,但也能下载下来)或者下面的淘宝镜像地址(下载速度快)将git下载下来,然后安装。 1
  • GIT合并分支的三种实现方式

    GIT合并分支的三种实现方式
    一、使用merge命令合并分支 1、目标:将dev分支合并到master分支 1.1、首先切换到master分支上 1 git checkout master 1.2、如果是多人开发的话 需要把
  • git中怎么设置代理
    git设置代理 Git 设置代理通常用于在公司内网或需要通过代理服务器访问外网的情况下。 以下是一些常用的设置方法: 命令行一次性设置代
  • 接口防刷(限流)的基本操作介绍

    接口防刷(限流)的基本操作介绍
    接口防刷是生产项目落地必须解决的问题,这篇文章会从架构的角度,分层次的讲讲如何解决这个问题。 接口防刷(Rate Limiting / Anti-scrapi
  • Socket套接字、TCP和UDP协议以及Java高性能介绍

    Socket套接字、TCP和UDP协议以及Java高性能介绍
    网络编程的时代意义 在数字化浪潮中,我们不仅是信息的消费者,更是信息的传输者。从简单的网页浏览到支撑亿级并发的分布式系统,其
  • 微信小程序中input组件为什么设置readonly只读属性

    微信小程序中input组件为什么设置readonly只读属性
    在博主印象中设置只读应该是readonly,太久没有写微信小程序,发现没有效果, 于是简单写篇文章记录下。 一、问题定位 微信小程序中,设
  • 鸿蒙开发之相对布局、倒计时TextTimer代码
    一、RelativeContainers 通过子组件之间的相对关系或子组件与父组件(__container__)的相对关系来布局,需结合alignRules方法和id属性实现。 基础
  • Git实现删除远程分支+本地分支

    Git实现删除远程分支+本地分支
    一、删除远程仓库分支 1 git push origin --delete 分支名 origin: 这是远程仓库的默认名称(如果你修改过远程仓库名称,请替换为你的实际名称)
  • 一些常见的Git分支命名策略和实践指南
    针对研发、测试、生产环境,以下是常见的 Git 分支命名策略和实践: 一、基于 Git Flow 的标准模型(经典) 1 2 3 4 5 master -- 生产环境(稳定
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计