在阿里云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/config
或open .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