最近在使用 Git 管理代码时,我希望通过 SSH 的方式与远程仓库(比如 GitHub 或 GitLab)建立安全的通信连接。由于目前的 HTTPS 方式每次推送代码都需要输入用户名和密码,这让我感到有些麻烦,于是决定配置 SSH 密钥来简化操作。我了解到,在 Windows 系统中,可以通过生成和添加 SSH 密钥的方式完成这一配置。然而,具体应该如何生成密钥、将其添加到 SSH-agent 中,以及如何把公钥上传到远程仓库呢?这些操作中有哪些细节需要注意呢?


什么是 SSH 密钥?

SSH 密钥是一种加密的认证方式,用于在不输入密码的情况下安全地访问远程服务器或 Git 仓库。它由一对密钥组成:

  • 私钥:保存在本地,切勿泄露。
  • 公钥:上传到 Git 服务器(如 GitHub),用于验证你的身份。

步骤 1:检查是否已有 SSH 密钥

在生成新的 SSH 密钥之前,先检查你的电脑上是否已经存在 SSH 密钥。

1、打开 Git Bash(可以在开始菜单中搜索)。

2、输入以下命令:

ls -al ~/.ssh

3、 查看输出结果,如果看到类似 id_rsa.pubid_ed25519.pub 的文件,说明你已经有一个 SSH 密钥。

如果没有这些文件,或者你想创建一个新的密钥,请继续下一步。


步骤 2:生成新的 SSH 密钥

1、在 Git Bash 中输入以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example"

your_email@example 替换为你的邮箱地址。

2、按回车后,系统会提示你选择保存密钥的路径。默认路径是 ~/.ssh/id_rsa,直接按回车即可。

3、接下来会提示你设置一个密码(可选)。如果你不想设置密码,直接按两次回车跳过。

4、完成后,你会看到类似以下的输出:

Your identification has been saved in ~/.ssh/id_rsa.
Your public key has been saved in ~/.ssh/id_rsa.pub.
The key fingerprint is:

步骤 3:启动 SSH 代理

SSH 代理是一个在后台运行的程序,用于管理你的 SSH 密钥。

1、在 Git Bash 中输入以下命令启动 SSH 代理:

eval "$(ssh-agent -s)"

2、如果成功启动,你会看到类似以下的输出:

Agent pid 12345

步骤 4:将 SSH 私钥添加到 SSH 代理

1、输入以下命令将私钥添加到 SSH 代理:

ssh-add ~/.ssh/id_rsa

如果你使用的是其他名称的密钥文件,请将 id_rsa 替换为对应的文件名。

2、如果设置了密码,系统会提示你输入密码。


步骤 5:复制 SSH 公钥

1、输入以下命令将公钥复制到剪贴板:

clip < ~/.ssh/id_rsa.pub

如果 clip 命令不可用,可以手动打开公钥文件(~/.ssh/id_rsa.pub),然后复制内容。

2、公钥的内容类似于:

ssh-rsa AAAAB3NzaC1yc2E... your_email@example

步骤 6:将 SSH 公钥添加到 Git 服务器

1、登录到你的 GitHub 账户。

2、点击右上角的头像,选择 Settings

3、在左侧菜单中,选择 SSH and GPG keys

4、点击 New SSH key 按钮。

5、在 Title 字段中,为你的密钥起一个名字(例如 “My Windows Key”)。

6、在 Key 字段中,粘贴刚才复制的公钥内容。

7、点击 Add SSH key 按钮保存。

GitLab的路径是:User Settings -> SSH Keys


步骤 7:测试 SSH 连接

1、在 Git Bash 中输入以下命令测试连接:

ssh -T git@github

如果使用的是 GitLab,将 如果使用的是 GitLab,使用下面的命令:

ssh -T git@gitlab

2、如果看到类似以下的输出,说明配置成功:

Hi luoxiaodou! You've successfully authenticated, but GitHub does not provide shell access.

步骤 8:配置 Git 使用 SSH

如果你之前使用的是 HTTPS 方式克隆仓库,现在可以将其切换为 SSH。

1、打开你的仓库目录。
2、输入以下命令:

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

username/repository.git 替换为你的仓库地址。


小提示

  • 如果你有多个 Git 账户,可以为每个账户生成不同的 SSH 密钥,并通过配置文件(~/.ssh/config)进行管理。
  • 定期更新你的 SSH 密钥以提高安全性。