Bitbucket SSH 密钥设置在 Windows 上

2025年6月16日 | 14 分钟阅读

SSH 和 Bitbucket 简介

安全外壳(Secure Shell),简称 SSH,是一种加密网络协议,允许客户端和服务器在不安全的网络上安全通信。它保证关键信息(例如登录凭据或存储库访问)免受未经授权用户的侵害,并提供加密身份验证。使用 Bitbucket 时,SSH 促进了本地计算机和远程存储库之间的安全流畅连接,使您能够进行 Git 操作。

什么是 SSH?

SSH 是一种流行的协议,旨在实现跨不安全网络的安全数据传输和对远程系统的安全访问。它使用加密过程,该过程使用一对密钥:一个安全地保存在本地计算机上的私钥和一个保存在远程服务器(如 Bitbucket)上的公钥。当发出连接请求时,服务器通过将公钥与私钥进行比较来验证用户,而无需密码。此方法在提高安全性的同时降低了凭据泄露的可能性。

为什么将 SSH 与 Bitbucket 结合使用?

使用 SSH 与 Bitbucket 结合使用是一种极其安全有效的方法,无需不断输入登录信息即可对存储库进行身份验证和交互。SSH 密钥对于每个用户和机器都是唯一的,因此大大降低了网络钓鱼尝试、暴力破解攻击和凭据盗窃的风险。

当自动化过程(例如 持续集成/持续部署 (CI/CD) 管道)需要无需人工干预即可访问存储库时,SSH 身份验证非常有用。开发人员可以通过利用 SSH 密钥来保证流畅的 Git 操作,包括克隆、推送、拉取和获取更新,同时保持高度安全性。

SSH 在 Git 身份验证中如何工作?

Git 中,基于 SSH 密钥的身份验证使用密钥对而不是密码来确认用户的身份。Bitbucket 接收公钥,而用户的本地机器保存私钥。当 Bitbucket 通过 SSH 执行 Git 操作(例如克隆或推送存储库)时,它会通过检查公钥来验证访问。如果密钥匹配,用户可以安全地访问存储库,而无需密码。例如,配置 SSH 后,不再使用

https://bitbucket.org/user/repository.git,

而是使用 git@bitbucket.org:user/repository.git

来安全地连接和交互存储库。

SSH 密钥设置的先决条件

所需软件和工具

  • 安装适用于 Windows 的 Git: 需要安装适用于 Windows 的 Git 才能生成和管理 Bitbucket SSH 密钥,因为它提供了用于有效执行 Git 命令的命令行界面。从官方 Git 网站下载最新版本,然后按照安装说明安装 Git。建议在安装过程中选择 Git Bash 作为默认终端,因为它提供了类似 Unix 的环境,用于在 Windows 上执行 Git 和 SSH 相关命令。
  • 验证 OpenSSH 安装: 要与 Bitbucket 建立安全的 SSH 连接,您必须安装 OpenSSH。许多当前的 Windows 版本都默认包含 OpenSSH,但验证其是否存在很重要。在命令提示符或 Git Bash 中运行命令 ssh -V 以确认它已安装。如果 OpenSSH 已安装,将显示版本信息,例如 OpenSSH_for_Windows_8.1p1 和 LibreSSL 3.0.2。如果 OpenSSH 尚未安装,您可以手动添加它,方法是选择“设置”>“应用”>“可选功能”,单击“添加功能”,查找“OpenSSH 客户端”,然后安装它。安装后重新启动计算机以实施更改。或者,如果您已经安装了适用于 Windows 的 Git,则可能不需要单独安装 OpenSSH,因为它预加载了。当您需要完全类似 Unix 的环境时

Bitbucket 账户设置

  • 创建 Bitbucket 账户: 在配置 SSH 密钥之前,必须拥有一个活跃的 Bitbucket 账户。Bitbucket 是一种基于云的 Git 存储库托管服务,开发人员可以更有效地协同开发软件项目。如果您还没有账户,请访问 Bitbucket 网站,单击“注册”,然后输入您的姓名、电子邮件地址和密码以创建账户。提交必要数据后,通过检查您的电子邮件以获取验证链接来验证您的账户。登录 Bitbucket 后,建立一个工作区,您可以在其中构建存储库和管理您的项目。Bitbucket 账户至关重要,因为它们允许您与团队合作、安全地存储存储库,并启用 SSH 身份验证,以便无需频繁输入登录信息即可轻松访问。

访问 Bitbucket 中的 SSH 密钥设置

为了在没有密码的情况下安全地对存储库访问进行身份验证,您必须将创建的 SSH 密钥添加到 Bitbucket 的 SSH 密钥设置中。单击右上角的个人资料图片,选择“个人设置”。在左侧菜单中选择“安全”部分后,单击“SSH 密钥”以打开密钥管理页面。在这里,您将输入在本地计算机上创建的公共 SSH 密钥。创建 SSH 密钥后,复制 .pub 文件的内容并将其上传到 Bitbucket 的“SSH 密钥”区域。添加 SSH 身份验证后,对存储库的访问将是安全且无需密码的。通过使用此配置,可以提高安全性并简化身份验证过程。

例如,当通过 SSH 连接到远程服务器时,命令 ssh user@remote-server.com(其中 user 是远程系统上的账户名,remote-server.com 是目标计算机)将启动安全连接。

在 Windows 上生成 SSH 密钥

通过在 Windows 上创建 SSH 密钥,用户可以安全地使用 Bitbucket 进行身份验证,而无需不断输入密码。通过使用 Git Bash 创建新的 SSH 密钥对,您可以确保与 Bitbucket 的连接高效且安全。

使用 Git Bash 生成 SSH 密钥

首先打开 Git Bash,它提供了一个类似于 Unix 的 Windows 环境。打开后,可以使用以下命令创建新的 SSH 密钥对

此命令创建一个 4096 位 RSA 密钥并将其与您提供的电子邮件地址关联。系统将提示您选择密钥的文件位置。按 Enter 接受 C:\Users\YourUsername\.ssh\id_rsa 作为默认文件位置。为了额外安全,系统还会要求您创建一个密码。虽然这不是必需的,但建议使用密码以提高安全性。如果您不想使用,只需输入空并按 Enter 即可。

了解 SSH 密钥文件

公钥 (id_rsa.pub) 和私钥 (id_rsa) 是构成密钥对的两个文件。公钥旨在与 Bitbucket 等服务共享,而私钥应始终安全保存,永不共享。当您连接到 Bitbucket 时,私钥用于验证公钥,从而确保安全访问您的存储库。公钥创建的加密通信由私钥解锁。

在 Windows 上查找您的 SSH 密钥

SSH 密钥对生成后,位于用户配置文件的 .ssh 目录中。此文件夹在 Windows 上位于 C:\Users\YourUsername\.ssh。

您可以通过在 Git Bash 或命令提示符中执行以下命令来访问该目录

这将显示 .ssh 文件夹的内容,其中包含文件 id_rsa.pub(公钥)和 id_rsa(私钥)。您还可以通过打开文件资源管理器的隐藏项目功能并转到 C:\Users\YourUsername\.ssh 来手动查找 .ssh 目录。由于私钥用于无密码身份验证,因此它是您与 Bitbucket 安全连接的重要组成部分,应妥善保管。

将 SSH 密钥添加到 Bitbucket

复制公钥

  • 使用 cat 或 clip 命令复制密钥: 在复制 SSH 公钥之前,请转到 Windows 计算机上的 SSH 密钥目录。SSH 密钥默认存储在 C:\Users\ [YourUsername]\.ssh\ 中,除非您提供不同的目录。在此文件夹中找到通常名为 id_rsa.pub 的文件,这是您的公共 SSH 密钥。要访问此目录,请使用终端(PowerShell 或命令提示符)。

您可以使用终端中的以下命令查看公钥文件的内容

您的公钥将因此出现在终端中。然后可以手动突出显示并复制完整的密钥。

另一种方法是使用 clip 命令,它会自动将内容复制到剪贴板

运行程序后,您的公钥将保存在剪贴板中,准备插入到 Bitbucket 配置中。

将密钥添加到 Bitbucket

导航到 Bitbucket 设置 → SSH 密钥

复制 SSH 密钥后的下一步是将其添加到您的 Bitbucket 账户。首先,使用 Bitbucket 网站登录您的账户。登录后,单击页面左下角的头像或个人资料照片以访问您的账户菜单。接下来,选择 Bitbucket 设置。在设置菜单的左侧边栏中,查找“安全”类别下的“SSH 密钥”区域。单击“SSH 密钥”将出现一个可以管理 SSH 密钥的页面。

添加和保存公钥

单击“添加密钥”按钮以添加您的新密钥。系统将提示您输入密钥的标签(例如“我的 Windows 笔记本电脑”)以及一个用于粘贴公钥的字段。在指定字段中,粘贴您已复制的密钥,代理会在您连接时确认您的身份。粘贴密钥后,确保没有多余的空格或换行符。一切似乎正常后,单击“添加密钥”以保存您的 SSH 密钥。此密钥现在将与您的账户关联,使您能够安全地连接到存储库并进行身份验证,而无需不断输入用户名和密码。通过 SSH 在 Bitbucket 上克隆、拉取或推送存储库时,保存后您应该能够使用此 SSH 密钥进行身份验证。

在 Windows 上为 Bitbucket 配置 SSH

.检查 SSH 代理状态

在使用 SSH 连接到 Bitbucket 之前,务必确认您的 Windows 计算机上已安装 SSH 代理。SSH 代理提供安全身份验证并跟踪您的私钥。使用 Git Bash 或命令提示符,您可以查看 SSH 代理是否正在运行。应在其中一个终端中键入 ssh-agent -s。如果代理已经处于活动状态,它将返回代理的进程 ID (PID),验证它是在您连接时确认您身份的代理,并已准备好处理 SSH 密钥。如果它尚未运行,您将需要通过在终端中输入 eval $(ssh-agent -s) 手动启动代理。

将私钥添加到 SSH 代理

启动 SSH 代理后的下一步是将其添加到私钥。这使得代理能够在您使用 SSH 密钥连接到 Bitbucket 存储库时确认您的身份。使用 ssh-add 命令和私钥的路径来添加它,私钥通常保存在主目录的 .ssh 目录中(即 ~/.ssh/id_rsa)。

以下命令可以在命令提示符或 Git Bash 中键入

此命令指示 SSH 代理将指定的私钥 (id_rsa) 加载到其内存中。如果成功,将出现一条消息,验证密钥已添加到代理。确保您的私钥位于指定位置,并且没有文件权限问题,如果您遇到任何问题。

创建或编辑 SSH 配置文件

可以创建或编辑 SSH 配置文件,以使为不同服务维护多个 SSH 密钥变得更容易。如果您处理各种服务的许多 SSH 密钥,此文件可能特别有用。它使您能够使用特定设置配置 SSH 连接,例如为 Bitbucket 使用不同的密钥。配置文件可以在主目录的 .ssh 文件夹中找到。如果文件不存在,可以使用文本编辑器创建它。

要设置 Bitbucket 的 SSH 连接,请在 .ssh 目录中打开或创建配置文件并添加以下设置

此配置包括以下内容:Host 定义连接的别名 (bitbucket.org),HostName 提供主机名本身 (bitbucket.org),User 将默认 SSH 用户设置为 git(因为 Bitbucket 使用 git 进行 SSH 连接),IdentityFile 指向用于身份验证的私钥。通过此设置,SSH 代理将在您每次连接到 Bitbucket 时使用正确的私钥 (id_rsa) 进行身份验证,从而无需您手动指定密钥。

测试与 Bitbucket 的 SSH 连接

运行 SSH 测试命令

在配置 Bitbucket SSH 密钥后,测试连接至关重要,以确保一切按计划进行。根据您的偏好,启动 Git Bash 或终端并执行 ssh -T git@bitbucket.org。此命令旨在在 Bitbucket 和您的本地计算机之间建立安全的 SSH 连接。它有助于确认您的 Bitbucket 账户已链接到您的公共 SSH 密钥,并确保 SSH 代理已正确设置为使用您的私钥。执行请求时,终端将尝试使用 Bitbucket 进行身份验证。

理解成功消息

如果 SSH 连接成功建立,Bitbucket 将回复类似以下的消息

此响应表明身份验证现已完成,并且您的 SSH 密钥已成功添加到您的 Bitbucket 账户。Bitbucket 正在确认您拥有访问存储库所需的授权,并且 SSH 密钥与您的账户关联的密钥匹配。此消息确认设置成功。但是,如果存在任何问题,例如不正确的 SSH 密钥或缺少配置,Bitbucket 可能会提供错误消息,例如“权限被拒绝 (publickey)”,表明存在问题。在这种情况下,您需要确认您的本地 SSH 代理正在使用正确的私钥,仔细检查 SSH 密钥设置,并确认您的 Bitbucket 账户中有正确的密钥。

疑难解答常见问题

权限被拒绝 (Publickey) 错误

“权限被拒绝 (Publickey)”问题最常见的原因是 SSH 密钥丢失或未正确插入 SSH 代理。这表明您的 SSH 客户端尝试连接到 Bitbucket 但无法找到或使用适当的 SSH 密钥。要解决此问题,请确保您已首先创建 SSH 密钥。要生成一个,请使用 ssh-keygen 并遵循说明。必须通过将生成的密钥添加到 SSH 代理来启用身份验证。应使用命令 ssh-add ~/.ssh/id_rsa;如果不同,请提供私钥的正确路径。

Bitbucket 拒绝 SSH 连接

Bitbucket 拒绝您的 SSH 连接可能是由于密钥格式不正确,或者 Bitbucket 上存储的公钥与您计算机上的私钥不一致。在开始排除故障之前,请确保您使用的公钥格式正确。通过使用 cat ~/.ssh/id_rsa.pub 检查它,确保它以 ssh-rsa 开头并以您的电子邮件地址结尾。之后,登录您的 Bitbucket 账户并确认正确的公钥已添加到您个人资料的 SSH 密钥区域。如果密钥格式或内容不正确,请使用 ssh-keygen 重新创建密钥并将更新后的密钥添加到 Bitbucket。另一个常见问题可能是 Bitbucket 正在使用过时的密钥,因此请将其删除。

SSH 代理未运行

管理您的 SSH 密钥并启用与 Bitbucket 等远程服务的连接是 SSH 代理的职责。如果 SSH 代理未运行,它将不会进行身份验证,并且您在尝试连接时可能会遇到问题。命令 ps aux | grep ssh-agent 可用于查看 SSH 代理是否正在运行。如果它未运行,请使用命令 eval "$(ssh-agent -s)" 启动它。一旦启动,使用 ssh-add ~/.ssh/id_rsa(或确切的文件路径)将您的 SSH 密钥添加到代理。如果它正在运行但仍然无法运行,请尝试重新启动代理并再次添加密钥。此外,您可以使用 ssh-add -l 查看您的密钥是否已加载到代理中。这将列出当前加载的密钥。如果您的密钥丢失,只需使用 ssh-add 命令重新添加您的密钥,然后运行 ssh -T git@bitbucket.org 以确认 Bitbucket 已连接。

在 Bitbucket 中使用 SSH 进行 Git 操作

使用 SSH 克隆存储库

在使用 SSH 克隆 Bitbucket 存储库之前,请确保您的 SSH 密钥已在 Bitbucket 上正确配置。密钥配置后,在终端或 Git Bash 中键入 git clone git@bitbucket.org:username/repository.git。username/repository.git 代表您要克隆的存储库的路径,而 git@bitbucket.org 部分则指 SSH 协议。通过这样做,您可以通过将存储库下载到您的计算机来在本地进行更改。克隆后,您可以使用命令 cd repository 进入存储库目录并开始处理您的文件。请记住,使用 SSH 进行克隆可确保您与 Bitbucket 的通信安全加密,从而保护您的凭据和数据。

安全地推送和拉取更改

克隆存储库后,您可以使用 SSH 进行安全身份验证以推送和拉取更改。要将更改从本地文件提交到远程 Bitbucket 存储库,请使用命令 git push origin branch-name,其中 branch-name 是您正在使用的分支的名称。您无需重复输入用户名和密码,因为 Git 会使用您的 SSH 密钥进行身份验证。同样,使用 git pull origin branch-name 命令从 Bitbucket 存储库拉取最新更改。SSH 密钥将安全地验证您的身份,它还将从远程分支获取并将更改集成到您的本地存储库中。这种方法不仅简化了您的工作流程,同时保护了您的登录信息并保持了您与 Bitbucket 通信的完整性。

管理 SSH 密钥的最佳实践

保护您的私钥

至关重要的是,您绝不能将您的私钥泄露给任何人。始终使用强大的密码短语生成您的 SSH 密钥以提高安全性。如果您的私钥被黑客入侵,这提供了额外的安全层。例如,如果您的私钥存储在本地计算机上,请确保它已用密码短语锁定,并且您的计算机已用强密码保护。

定期轮换 SSH 密钥

通过定期创建新密钥来定期轮换 SSH 密钥将提高安全性。由于旧密钥将不再有效,这降低了密钥被泄露时可能造成的损害。例如,为了降低风险,如果您使用 SSH 密钥访问 Bitbucket,请养成每隔几个月创建和配置新密钥的习惯。

管理多个 SSH 密钥

使用 SSH 配置文件可以更轻松有效地管理许多 SSH 密钥,例如用于各种 Bitbucket 和 GitHub 账户。为了确保在无需手动干预的情况下为每个账户使用正确的密钥,您可以在配置文件中指定要用于特定主机的密钥。

在您的 SSH 配置中添加类似以下内容将是一个示例

这允许您使用特定密钥连接到 Bitbucket,而无需每次手动指定它。

结论

总之,在 Windows 上为 Bitbucket 启用 SSH 可确保安全、无密码的 Git 操作身份验证。通过创建 SSH 密钥对、配置 SSH 代理并将公钥添加到您的 Bitbucket 账户,可以提高从存储库克隆、推送和拉取的效率。此外,该过程促进了自动化,从而提高了效率和安全性。如果您测试连接并使用 SSH 配置文件管理各种密钥,您的所有 Bitbucket 活动都将顺利安全地运行。


下一主题事实表类型