Close

什么是 Git SSH 密钥?

SSH 密钥是 SSH(安全外壳)网络协议的访问凭证。这种经过身份验证和加密的安全网络协议用于不安全开放网络上计算机之间的远程通信。SSH 用于远程文件传输、网络管理和远程操作系统访问。SSH 缩略词还用于描述一组用于与 SSH 协议交互的工具。

SSH 使用一对密钥在远程各方之间发起安全握手。密钥对包含公钥和私钥,私有与公共命名法可能会令人困惑,因为它们都被称为密钥。将公钥视为“锁”,私钥视为“钥匙”会更有帮助,您将公共‘锁’交给远程各方以加密或‘锁定’数据。然后使用您保存在安全位置的‘私有’密钥打开这些数据。


如何创建 SSH 密钥


SSH 密钥通过公钥加密算法生成,最常见的是 RSADSA。在非常高的级别上,SSH 密钥是通过数学公式生成的,该公式采用 2 个素数和一个随机种子变量来输出公钥和私钥。这是一个单向公式,可确保公钥可以从私钥中派生,但私钥不能从公钥派生。

SSH 密钥是使用密钥生成工具创建的。SSH 命令行工具套件包括注册机工具。大多数 git 托管提供商都提供了如何创建 SSH 密钥的指南。

在 Mac 和 Linux 上生成 SSH 密钥

OSX 和 Linux 操作系统都有全面的现代终端应用,这些应用附带了 SSH 套件。它们之间创建 SSH 密钥的流程是相同的。

1. 执行以下命令开始创建密钥

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Git 徽标
相关资料

Git 速查表

Bitbucket 徽标
查看解决方案

了解 Bitbucket Cloud 的 Git

此命令将使用电子邮件作为标签创建新的 SSH 密钥

2. 然后,系统将提示您“输入要保存密钥的文件。”
您可以指定文件位置或按 “Enter” 接受默认文件位置。

> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

3. 下一个提示将要求输入安全密码。密码将为 SSH 增加一层额外的安全保护,每当使用 SSH 密钥时都需要密码短语。如果有人获得了存储私钥的计算机的访问权限,他们也可以访问任何使用该密钥的系统,为密钥添加密码可以防止这种情况。

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

此时,将在先前指定的文件路径上生成新的 SSH 密钥。

4. 将新的 SSH 密钥添加到 ssh-agent

ssh-agent 是 SSH 工具套件中的另一个程序。ssh-agent 负责持有私钥,可以把它想象成钥匙扣。除了持有私钥外,它还代理使用私钥签署 SSH 请求的请求,这样可以避免私钥不安全地传递。

在向 ssh-agent 添加新的 SSH 密钥之前,请先执行以下命令,确保 ssh-agent 正在运行:

$ eval "$(ssh-agent -s)"
> Agent pid 59566

ssh-agent 运行后,以下命令会将新的 SSH 密钥添加到本地 SSH 代理。

ssh-add -K /Users/you/.ssh/id_rsa

新的 SSH 密钥现已注册并可供使用!

在 Windows 上生成 SSH 密钥


Windows 环境没有标准的默认 unix shell。需要安装外部 shell 程序才能获得完整的注册机体验。最直接的选择是使用 Git Bash。安装 Git Bash 后,可以在 Git Bash shell 中针对 Linux 和 Mac 执行相同步骤。

Windows Linux 子系统


现代 Windows 环境提供了 windows linux 子系统。windows linux 子系统在传统的 Windows 环境中提供了完整的 linux shell。如果 linux 子系统可用,则可以在 windows linux 子系统中执行前面讨论的针对 Linux 和 Mac 的相同步骤。

摘要


SSH 密钥用于对安全连接进行身份验证。按照本指南,您将能够创建和开始使用 SSH 密钥。在推送或拉入远程存储库时,Git 能够使用 SSH 密钥代替传统的密码授权。像 Bitbucket 这样的现代托管 Git 解决方案支持 SSH 密钥授权。


分享此文章
下一主题

推荐阅读

将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。

人们通过满是工具的墙进行协作

Bitbucket 博客

Devops 示意图

DevOps 学习路径

与 Atlassian 专家一起进行 Den 功能演示

Bitbucket Cloud 与 Atlassian Open DevOps 如何协同工作

注册以获取我们的 DevOps 新闻资讯

Thank you for signing up