1. SSH密钥
SSH 密钥是一种非对称加密机制,用于安全地进行身份验证和数据传输。它由公钥和私钥组成,公钥用于加密数据,私钥用于解密数据和身份验证。在使用 Git 进行远程操作时,我们可以将公钥上传到 Git 服务器,并将私钥保存在本地,这样就可以在不输入密码的情况下与服务器进行通信。
SSH密钥的使用可以提高系统安全性,避免了传统的用户名和密码的直接传输,并且可以实现无密码登录和自动化流程。
2. 生成密钥
通过命令生成两个密钥文件id_rsa和id_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的配置信息。