一、SSH 密钥认证的原理
SSH 密钥认证使用的是公钥加密技术。其核心原理包括以下几个部分:
- 公钥 (public key):用于加密数据,可以公开分发。
- 私钥 (private key):用于解密数据,必须严格保密。
在 SSH 认证过程中,服务器使用公钥加密一个随机生成的挑战信息,客户端用私钥解密并响应。只有持有正确私钥的客户端才能通过认证。
二、生成和配置 SSH 密钥
下面是生成和配置 SSH 密钥的具体步骤:
- 生成密钥对:
在你的本地机器上,使用以下命令生成一个新的 SSH 密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
这会提示你输入保存密钥的文件路径,通常默认保存为 ~/.ssh/id_rsa
(私钥)和 ~/.ssh/id_rsa.pub
(公钥)。
- 将公钥添加到服务器:
复制生成的公钥内容,并将其添加到你希望登录的服务器或服务(如 GitLab)。在 GitLab 中,进入设置页面,找到 SSH Keys 部分,然后粘贴公钥内容并保存。 - 启动 ssh-agent 并添加私钥:
为了简化后续的连接操作,可以将私钥添加到ssh-agent
中:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
三、使用 SSH 密钥进行 Git 操作
确保你的 Git 仓库使用的是 SSH URL 而不是 HTTPS URL:
- 检查当前远程仓库 URL:
git remote -v
如果显示的是 HTTPS URL,你需要将其更改为 SSH URL。
- 更改远程仓库 URL:
git remote set-url origin git@your_git_server:your_username/your_repository.git
- 验证 SSH 连接:
使用以下命令测试 SSH 连接:
ssh -T git@your_git_server
如果配置正确,你应该会看到类似 “Welcome to GitLab, @username!” 的信息。