一、SSH 密钥认证的原理

SSH 密钥认证使用的是公钥加密技术。其核心原理包括以下几个部分:

  1. 公钥 (public key):用于加密数据,可以公开分发。
  2. 私钥 (private key):用于解密数据,必须严格保密。

在 SSH 认证过程中,服务器使用公钥加密一个随机生成的挑战信息,客户端用私钥解密并响应。只有持有正确私钥的客户端才能通过认证。

二、生成和配置 SSH 密钥

下面是生成和配置 SSH 密钥的具体步骤:

  1. 生成密钥对
    在你的本地机器上,使用以下命令生成一个新的 SSH 密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

这会提示你输入保存密钥的文件路径,通常默认保存为 ~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub(公钥)。

  1. 将公钥添加到服务器
    复制生成的公钥内容,并将其添加到你希望登录的服务器或服务(如 GitLab)。在 GitLab 中,进入设置页面,找到 SSH Keys 部分,然后粘贴公钥内容并保存。
  2. 启动 ssh-agent 并添加私钥
    为了简化后续的连接操作,可以将私钥添加到 ssh-agent 中:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

三、使用 SSH 密钥进行 Git 操作

确保你的 Git 仓库使用的是 SSH URL 而不是 HTTPS URL:

  1. 检查当前远程仓库 URL
git remote -v

如果显示的是 HTTPS URL,你需要将其更改为 SSH URL。

  1. 更改远程仓库 URL
git remote set-url origin git@your_git_server:your_username/your_repository.git
  1. 验证 SSH 连接
    使用以下命令测试 SSH 连接:
ssh -T git@your_git_server

如果配置正确,你应该会看到类似 “Welcome to GitLab, @username!” 的信息。