前言
有时候我们需要配置多个git网站的ssh-key,来区分公司和个人的仓库。以下分为几种情况来阐述配置方式。
以下以gitee
和github
作为例子,实际可根据自己情况而定
配置gitee和github
-
分别生成
gitee
和github
的ssh-key这边的邮箱随便写,没有任何影响,只是用来作为标识
ssh-keygen -t ed25519 -C "x@x.com" -f ~/.ssh/github_id
ssh-keygen -t ed25519 -C "x@x.com" -f ~/.ssh/gitee_id
连续按三个回车
-
进入目录
~/.ssh
cd ~/.ssh
-
添加配置文件
config
# gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitee_id # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id
-
此时的文件目录
. ├── config ├── gitee_id ├── gitee_id.pub ├── github_id └── github_id.pub
-
验证
命令框输入:ssh -T git@github.com 出现以下就是成功: Hi ***! You've successfully authenticated, but GITEE.COM does not provide shell access.
配置两个gitee
方案一 修改host
- 添加host
这里的ip是
gitee.com
的
212.64.62.183 gitee_self.com
- 生成两个配置
ssh-keygen -t ed25519 -C "x@x.com" -f ~/.ssh/gitee_company
ssh-keygen -t ed25519 -C "x@x.com" -f ~/.ssh/gitee_self
- 在目录
~/.ssh
下创建配置
# gitee_self
Host gitee_self.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_self
# gitee_company
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_company
- 验证下
ssh -T git@gitee_self.com
ssh -T git@gitee.com
- clone项目
公司:
git clone git@gitee.com:**/**.git
个人:
git clone git@gitee_self.com:**/**.git
方案二 shell脚本
个人不太喜欢
方案一
,其实切换ssh-key的频率并不是很高,完全可以写一个脚本去做
- 在目录
~/.ssh
目录下生成config_company
和config_self
# config_self
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_self
# config_company
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_company
- 脚本
check_config.sh
# 这里使用了相对路径,根据实际情况,可以替换成绝对路径
parent_path="."
config_self="${parent_path}/config_self"
config_company="${parent_path}/config_company"
config_current="${parent_path}/config"
if [ ${1} -eq 1 ]; then
cat ${config_company} >${config_current}
else
cat ${config_self} >${config_current}
fi
# 打印结果
echoResult() {
current_config_desc="切换完成,当前配置:"$([ ${1} -eq 1 ] && echo "公司配置" || echo "个人配置")
echo
echo " * * * * * * * * * * * * * * * * * * * * *"
echo " * * * * * * * * * * * * * * * * * * * * *"
echo " * * * * * * * * * * * * * * * * * * * * *"
echo " * * * * * * * * * * * * * * * * * * * * *"
echo " * * * * * * * * * * * * * * * * * * * * *"
echo " * * * \033[33m" $current_config_desc "\033[0m* * * "
echo " * * * * * * * * * * * * * * * * * * * * *"
echo " * * * * * * * * * * * * * * * * * * * * *"
echo " * * * * * * * * * * * * * * * * * * * * *"
echo " * * * * * * * * * * * * * * * * * * * * *"
echo " * * * * * * * * * * * * * * * * * * * * *"
echo
echo
echo
}
echoResult ${1}
- 运行
cd ~/.ssh
# 切换到config_company环境
sh check_config.sh 1
# 切换到config_self环境
sh check_config.sh 9
- 最终每次切换成功后可以用命令
ssh -T git@gitee.com
验证下
如果感觉有用,请点个赞,谢谢