Git配置多个SSH密钥

800 阅读2分钟

1. SSH密钥

SSH 密钥是一种非对称加密机制,用于安全地进行身份验证和数据传输。它由公钥和私钥组成,公钥用于加密数据,私钥用于解密数据和身份验证。在使用 Git 进行远程操作时,我们可以将公钥上传到 Git 服务器,并将私钥保存在本地,这样就可以在不输入密码的情况下与服务器进行通信。
SSH密钥的使用可以提高系统安全性,避免了传统的用户名和密码的直接传输,并且可以实现无密码登录和自动化流程。

2. 生成密钥

通过命令生成两个密钥文件id_rsaid_ras.pub

ssh-keygen -t rsa -C "XXX@YY.com"

其中,id_rsa是私钥,id_ras.pub是公钥;

修改秘钥文件名

ssh-keygen -t rsa -f ~/.ssh/id_rsa.XXX -C "XXX@YY.com"

这样可以设置自定义文件名,通常用于设置多个密钥。

3. 配置多个SSH Key

实际使用中,需要使用不同的Key连接公司环境和个人GitHub,这时候就需要设置两个SSH Key

3.1 使用不同邮箱创建不同的密钥文件

KEY1 key1用于连接GitHub

ssh-keygen -t rsa -f ~/.ssh/id_rsa.XXX -C "XXX@qq.com"

KEY2 key1用于连接公司GIT

ssh-keygen -t rsa -f ~/.ssh/id_rsa.YYY -C "YYY@qq.com"

3.2 关键配置

~/.ssh文件夹下新增config文件,文件内容配置如下

Host github.com
	HostName github.com
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/id_rsa.XXX
Host 公司主机IP
	HostName 公司主机IP
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/id_rsa.YYY

说明

  • 公司GIT服务器只配置IP,不需要端口号
  • config文件内容每行的空格不影响使用,此处缩进只为了可读性

3.3 将各自公钥配置到服务器

将各自公钥配置到服务器 然后进行测试

ssh -T git@github.com
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@主机IP(不含端口号)
Welcome to GitLab, @YYY!

测试通过后,就可以克隆代码啦。

4. 用户配置

配置秘钥后,可以拉取代码,但是提交代码需要设置用户名。

4.1 全局用户配置

设置用户

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

查看用户

git config --global user.email
git config --global user.name

清除全局用户

git config --global --unset user.name "你的名字"
git config --global --unset user.email "你的邮箱"

4.2 在单个项目中配置用户

在项目.git文件夹下的config文件中增加配置

[user]
	name = XXX
	email = XXX@qq.com

配置该内容的项目以该内容为准,没有配置的则读取global user的配置信息。