Mac 系统下 配置多个ssh-key (git sourcetree)

在阿里云code有多个账号,多个账号不能同时使用同一个ssh key,那么就要设置多个ssh key
我还有github,gitlab等等账号也要配置
其他的也类似这样设置
fox.风

创建目录及config文件

mkdir -p  ~/.ssh/
touch ~/.ssh/config

创建秘钥

创建第一个秘钥

因为github,gitlab,gitee 只有一个账号,那么此处可以共用一套 公钥私钥

ssh-keygen -t rsa -C "foxiswho@gmail.com"

-t 指定要创建的密钥类型。可以使用:“rsa1”(SSH-1) “rsa”(SSH-2) “dsa”(SSH-2)
-C 提供一个新注释
-f 指定密钥文件名

执行后,后续步骤,直接按回车

github 配置 ssh 秘钥

https://github.com/settings/keys
点击按钮 new ssh key
复制如下命令 显示 的秘钥信息 到 key 内, title 名称随便填写

cat  ~/.ssh/id_rsa.pub

创建第二个秘钥

ssh-keygen -t rsa -C "foxiswho@gmail.com" -f ~/.ssh/aliyun1

-t 指定要创建的密钥类型。可以使用:“rsa1”(SSH-1) “rsa”(SSH-2) “dsa”(SSH-2)
-C 提供一个新注释
-f 指定密钥文件名

执行后,后续步骤,直接按回车

创建第三个秘钥

ssh-keygen -t rsa -C "foxiswho@gmail.com" -f ~/.ssh/aliyun2

第二个秘钥创建方式

设置ssh-agent代理

查看代理

ssh-add -l

输出

2048 SHA256:gNRaABeR7fMqq3erqweqwesfdxHlrqfpr123123123f3pOptg /Users/fox/.ssh/id_rsa (RSA)
2048 SHA256:gNRaABeR7fMqmv4wHfpEdPtHlrqfprHeXRZBP3pOptg /Users/fox/.ssh/aliyun1 (RSA)
2048 SHA256:fpuRV3Gi/j6DyzcT+mboHuY3z4wKqANPydY3UGMXsP0 foxiswho@gmail.com (RSA)

如果输出以下信息,则没有任何key

The agent has no identities.

如果想删除所有KEY

ssh-add -D

在代理中添加私钥

ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/aliyun1
ssh-add ~/.ssh/aliyun2

MAC 中执行

ssh-add -K ~/.ssh/id_rsa
ssh-add -K ~/.ssh/aliyun1
ssh-add -K ~/.ssh/aliyun2

配置config文件

vim ~/.ssh/config

这里做个说明,下面内容中github,gitlab,gitee 这3个可以不用配置的(为了直观显示,而放在下面),
因为只有一个账号,全使用默认的同一套公钥私钥,且都是使用git@code.aliyun.com:XXXX/XXX.git 域名方式拉取代码,
所以这里可以直接不需要把配置放在内
同理:如果阿里云其中一个账号也是使用的默认公共公钥私钥,那么也无需配置

gitlab
内容如下

# 建一个github 别名,新建的帐号使用这个别名做克隆和更新
  Host github
  HostName github.com
  User git
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa
  
# 建一个gitee 别名,新建的帐号使用这个别名做克隆和更新
  Host gitee
  HostName gitee.com
  User git
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa
  
# 建一个gitlab 别名,新建的帐号使用这个别名做克隆和更新
  Host gitlab
  HostName gitlab.com
  User git
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

# 建一个aliyun1 别名,新建的帐号使用这个别名做克隆和更新
  Host aliyun1
  HostName code.aliyun.com
  User git
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/aliyun1

# 建一个 aliyun2 别名,新建的帐号使用这个别名做克隆和更新
  Host aliyun2
  HostName code.aliyun.com
  User git
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/aliyun2

Host 别名(方便记忆)
HostName IP地址或者域名(可以写假域名,但要在host文件中绑定ip地址)
IdentityFile 对应的私钥,也就是不带.pub 后缀的
User 用户名,有的是邮箱,一般默认情况 git 就可以
Port 默认是22可以不写,如果自己搭建的服务器监听的是其他端口这个参数必须声明

取消全局 用户名 邮箱并给每个项目单独设置用户和邮箱

全局和项目都需要配置

全局配置

查看全局用户配置信息

git config --global --list

如果已经设置过全局 用户名和邮箱,那么要把取消掉,否则 默认使用全局配置

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

项目配置

进入项目目录打开终端
查看项目配置信息

git config --list

配置名称和邮箱

git config user.name "fox"
git config user.email "foxiswho@gmail.com"

SourceTree 全局配置

如果你用的SourceTree 记得也要修改
偏好设置->通用
取消选中允许 SourceTree 修改你的全局 Mercuial 和 Git 配置文件

测试登录是否成功

域名

ssh -T git@code.aliyun.com
Welcome to GIT, fox!

别名

ssh -T git@aliyun1

输出

Welcome to GIT, fox!
ssh -T git@aliyun2

输出

Welcome to GIT, fox2!

别以为这样就可以成功 pull 了

到项目目录下

git pull

报错

fatal: 无法读取远程仓库。
请确认您有正确的访问权限并且仓库存在。

别名为aliyun1 这个就不需要修改了,因为默认读取第一个秘钥

所以这里要修改 别名aliyun2 的项目,版本库中的URL
使用终端进入项目根目录,然后执行vim .git/configopen .git/config
修改

url = git@code.aliyun.com:fox/demo.git

修改为

url = aliyun2:fox/demo.git

这里主要就git@code.aliyun.com 修改为别名aliyun2
再执行git pull 即可成功

到这里就完成了吗,不是的,重启电脑后还是报错

以下方式可以解决

方式一:

每次手动操作执行一下命令

ssh-add -K ~/.ssh/id_rsa
ssh-add -K ~/.ssh/aliyun1
ssh-add -K ~/.ssh/aliyun2

这样在电脑没重启之前都可以使用

方式二

这样在启动用户登录后,自动执行一次

echo "ssh-add -K ~/.ssh/id_rsa " >> ~/.bash_profile
echo "ssh-add -K ~/.ssh/aliyun1 " >> ~/.bash_profile
echo "ssh-add -K ~/.ssh/aliyun2 " >> ~/.bash_profile

查看

cat ~/.bash_profile

最后2行应该有如下信息

ssh-add -K ~/.ssh/id_rsa 
ssh-add -K ~/.ssh/aliyun1 
ssh-add -K ~/.ssh/aliyun2

https://blog.csdn.net/maoxinwen1/article/details/80269299
https://www.jianshu.com/p/eb5794272374
https://www.lovean.net/?id=208

发布了377 篇原创文章 · 获赞 143 · 访问量 164万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览