一台电脑关联两个oschina账户

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/muumian123/article/details/82112282

公司项目和本人各有一个oschina的账户,因此需要配置对其分别进行关联,以期达到同时在git上使用并互不干扰的效果。

一、生成两个SSH-Key

分别使用如下命令生成两个SSH-Key:

ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "[email protected]"
ssh-keygen -t rsa -f ~/.ssh/id_rsa_x -C "[email protected]"

如下图:

生成的文件保存在 C:\Users\18708\.ssh 中:

二、 把两个公钥分别添加到对应的oschina账号中

 三、在.ssh目录创建config文本文件并完成相关配置

每个账号单独配置一个Host,每个Host要取一个别名,每个Host主要配置HostNameIdentityFile两个属性即可

HostName           这个是真实的域名地址
IdentityFile          这里是id_rsa的地址
PreferredAuthentications    配置登录时用什么权限认证--可设为publickey,password publickey,keyboard-interactive等
User             配置使用用户名

Host one.gitee.com             
    HostName git.oschina.net
    IdentityFile C:\\Users\\18708\\.ssh\\id_rsa
    PreferredAuthentications publickey
    User onename

Host two.gitee.com
    HostName git.oschina.net
    IdentityFile C:\\Users\\18708\\.ssh\\id_rsa_x
    PreferredAuthentications publickey
    User twoname

或者配置文件写为以下内容(建议第一种):

Host one.git.oschina.net            
    HostName git.oschina.net
    IdentityFile C:\\Users\\18708\\.ssh\\id_rsa
    PreferredAuthentications publickey
    User onename

Host two.git.oschina.net
    HostName git.oschina.net
    IdentityFile C:\\Users\\18708\\.ssh\\id_rsa_x
    PreferredAuthentications publickey
    User twoname

四、打开Git Bash执行测试命令测试

该步会自动在.ssh目录生成known_hosts文件把私钥配置进去。命令如下:

ssh -T [email protected]  
ssh -T [email protected] 
或者
ssh -T [email protected]
ssh -T [email protected]

五、分别clone两个账号的项目进行验证

git clone [email protected]:XXX/xxx.git
git clone [email protected]:XXX/xxx.git
或者
git clone [email protected]:XXX/xxx.git
git clone [email protected]:XXX/xxx.git

写在最后的原理分析:
1. ssh 客户端是通过类似 [email protected]:githubUserName/repName.git ** 的地址来识别使用本地的哪个私钥的,地址中的 User 是@前面的git, Host 是@后面的git.oschina.net;
2. 如果所有账号的 User 和 Host 都为 git 和 git.oschina.net,那么就只能使用一个私钥。所以要对User 和 Host 进行配置,让每个账号使用自己的 Host,每个 Host 的域名做 CNAME 解析到 git.oschina.net,如上面配置中的Host   two.git.oschina.net
3.配置了别名之后,新的地址就是[email protected]:githubUserName/repName.git**(在添加远程仓库时使用)。
这样 ssh 在连接时就可以区别不同的账号了。

猜你喜欢

转载自blog.csdn.net/muumian123/article/details/82112282