1. 生成两个sshkey
生成第一个sshkey
$ ssh-keygen -t rsa -C "你的邮箱1@xxx.com"
生成第二个sshkey
$ ssh-keygen -t rsa -C "你的邮箱2@xxx.com"
注意:不要一路回车,要对文件进行重命名。
在这里我创建的第一个sshkey是id_rsa
,第二个是 id_rsa_two
2. 配置 config
我们需要在目录: ~/.ssh/ (linux),C:\Users\admin\.ssh\ (windows),创建config文件,并且配置ssh key的路由策略。
创建config文件:
$ touch config
linux 下 config 配置:
# gitee server one
Host gitee.com
HostName gitee.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# gitee server two
Host gitee_two.com
HostName gitee.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_two
windows 下 config 配置:
#gitee server one
Host gitee.com
Hostname gitee.com
User git
PreferredAuthentications publickey
IdentityFile C:\\Users\\\admin\\.ssh\\id_rsa
#gitee server two
Host gitee_two.com
Hostname gitee.com
User git
PreferredAuthentications publickey
IdentityFile C:\\Users\\\admin\\.ssh\\id_rsa_two
Host
: 相当于一个别名,远程仓库地址的域名别名它涵盖了下面一个段的配置,我们可以通过他来替代将要连接的服务器地址。这里可以使用任意字段或通配符。访问ssh的时候如果服务器地址能匹配上这里Host指定的值,则Host下面指定的HostName将被作为最终的服务器地址使用,并且将使用该Host字段下面配置的所有自定义配置来覆盖默认的/etc/ssh/ssh_config
配置信息。
HostName
:真正连接的服务器地址
User
:自定义的用户名
PreferredAuthentications
指定优先使用哪种方式验证,支持密码和秘钥验证方式
IdentityFile
:指定本次连接使用的密钥文件
3. 添加sshkey
通过查看 ~/.ssh/id_rsa.pub 文件内容,获取到你的 public key
cat ~/.ssh/id_rsa.pub
image.png
- 添加公钥:
复制生成后的 ssh key,通过仓库主页 「管理」->「部署公钥管理」->「添加部署公钥」 ,将生成的 public key 添加到仓库中。( 针对于码云 )
4. 验证是否成功
连接测试
[root@hostname .ssh]# ssh -T git@gitee.com
Hello 用户名 You've connected to Coding.net by SSH successfully!
[root@hostname .ssh]# ssh -T git@gitee_two.com
Hi 用户名! You've successfully authenticated, but GitHub does not provide shell access.
image.png
5. 拉取项目设置
通过上述设置,就可以通过不同的Host来针对不同的git仓库和git项目使用不同的ssh key。
注意:通常情况下我们从git仓库拉取的项目ssh访问地址,类似这种git@git仓库地址:用户名/项目名.git
。一定要把这里的git仓库地址替换为ssh config里面设定的Host。
[root@hostname .ssh]# git clone git@gitee.com:用户名/项目名.git
替换为如下
[root@hostname .ssh]# git clone git@gitee_two.com:用户名/项目名.git
6. 关联本地已有的项目
通过上述设置,就可以通过不同的Host来针对不同的git仓库和git项目使用不同的ssh key。
注意:通常情况下我们将本地仓库与git远程仓库进行关联时的地址是ssh访问地址时,类似这种git@git仓库地址:用户名/项目名.git
。一定要把这里的git仓库地址替换为ssh config里面设定的Host。
git remote add origin git@gitee.com:用户名/项目名.git
git remote add origin git@gitee_two.com:用户名/项目名.git
网友评论