Git - SSH 协议



SSH(安全外壳)协议是一种广泛使用的传输协议,易于设置,并且广泛适用于自托管的 Git 仓库。克隆、推送和获取等操作都受支持。在此,Git 使用 SSH 进行用户身份验证和通过网络传输数据的加密。

  • 它经常被选择,因为对服务器的 SSH 访问要么已经建立,要么易于设置。

  • SSH 提供授权的网络连接,使 Git 操作更易于使用且更可靠。

主要特征

SSH 的一些主要特征包括:

1. 安全认证 - SSH 使用公钥加密进行身份验证。用户生成一对 SSH 密钥

  • 公钥 - 与 Git 服务器(如 GitHub、GitLab)共享的密钥。

  • 私钥 - 保留在用户机器上的密钥,无需密码即可访问。

2. 数据加密 - 通过对从客户端到服务器以及反向传输的所有数据进行加密来维护机密性和保护。

3. 轻松访问 - 配置 SSH 密钥后,会自动进行身份验证。因此,每次连接到远程仓库时,都不需要输入密码。

它是如何工作的?

以下是描述 SSH 协议工作原理的步骤:

  • 生成 SSH 密钥 - 使用ssh-keygen在本地机器上生成 SSH 密钥对。

  • 将公钥添加到服务器 - 上一步生成的公钥将添加到远程 Git 服务器,即添加到您的 GitHub 或 GitLab 帐户下的 SSH 密钥中。

  • 使用 SSH URL - 使用 SSH URL 访问仓库,而不是使用 HTTP(S) URL。

  • SSH 代理 - 为了缓存您的 SSH 密钥,以避免重复添加密钥的密码短语,您可以在本地机器上使用ssh-agent

要通过 SSH 克隆 Git 仓库,可以使用:

git clone ssh://[user@]server/project.git

git clone [user@]server:project.git

如果 URL 中未指定用户名,Git 会假设当前登录的用户用于身份验证。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

优点

以下是使用 SSH 进行 Git 仓库的一些优点:

  • 高度安全 - SSH 通过确保通过经过验证和加密的数据传输的安全访问来提高整体安全性。

  • 更快的性能 - 与 HTTPS 和本地协议相比,SSH 有效地提高了数据传输大小和性能。

  • 可信的连接 - 在初始连接后,服务器的 SSH 指纹经过验证,与服务器的连接和通信是可信且安全的。

  • 无需密码访问 - 初始设置完成后,无需输入密码即可与远程仓库交互。

缺点

以下是使用 SSH 进行 Git 仓库的一些缺点:

  • 复杂的设置 - 设置 SSH 密钥可能很复杂且耗时,尤其对于初学者而言。

  • 缺乏支持 - SSH 对 Git 仓库匿名访问的支持不足是一个缺点。

  • 开源项目的限制 - 克隆和仓库访问需要 SSH 访问,这对于经常允许匿名克隆的开源项目来说可能是一个限制。

  • 性能开销 - SSH 通常很快,但加密和解密过程会在数据传输过程中引入延迟。

  • 协作环境中的困难 - 对于需要多个用户访问共享帐户的环境来说,这不太理想,需要将每个用户的 SSH 密钥添加到帐户中。

尽管存在这些限制,SSH 仍然是最受信任和最广泛使用的安全通信协议。

广告