在Mac(Linux)上为gitee码云 添加多个公钥 ssh key(适用于github添加)

前言:笔者在开发工作中开始准备使用个人码云来完成自己的个人作品,但是之前呢,我已经在本地添加过公司码云账号的ssh key.那如何再设置我们自己的ssh key呢.

码云官网的说明文档(参考此文档):

Git配置多个SSH-Key

接下来我们开始操作

(一)我们应该去生成一个ssh-key:

[email protected]是你的码云账号

id_rsa_ldb随意你自己填写,但是请记住

ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/id_rsa_ldb

(二)在~/.ssh下创建config文件(使用touch config命令)

(三)创建完config文件,vi或vim打开文件,写入

# gitee 第一个ssh-key 公司账号
Host gitee.com #这是主地址
HostName git.oschina.ne #这是码云地址,不变
IdentityFile ~/.ssh/id_rsa #标识文件
User [email protected]  #写上你的码云账号
# gitee 第二个ssh-key 个人账号
Host gitee.ldb.com  #这是主地址
HostName git.oschina.net  #这是码云地址,不变
IdentityFile ~/.ssh/id_rsa_ldb  #标识文件
User [email protected] #写上你的码云账号

(四)在码云上添加自己的公钥

在Mac(Linux)上为gitee码云 添加多个公钥 ssh key(适用于github添加)_第1张图片

(五)然后在回来终端使用命令测试是否配置成功:ssh -T git@xxx(此字段为Host),以下是测试结果

?完成.这时候就可以开始愉快地使用自己的个人账号了.

(六)可能出现的问题

(1)出现Permission denied提示,则说明有权限问题,而多用户时出现权限问题的原因:

gitee或github使用SSH与客户端连接。如果是单用户(first),生成密钥对后,将公钥保存至 gitee或github ,每次连接时SSH客户端发送本地私钥(默认~/.ssh/id_rsa)到服务端验证。单用户情况下,连接的服务器上保存的公钥和发送的私钥自然是配对的。但是如果是 多用户 (first,second),我们在连接到second的帐号时,second保存的是自己的公钥,但是SSH客户端依然发送默认私钥,即first的私钥,那么这个验证自然无法通过。

解决ssh权限问题:

通常一台电脑生成一个ssh不会有这个问题,当一台电脑生成多个ssh的时候,就可能遇到这个问题,解决步骤如下:

1.查看系统ssh-key代理,执行如下命令

ssh-add -l

以上命令如果输出  The agent has no identities. 则表示没有代理。如果系统有代理,可以执行下面的命令清除代理:

ssh-add -D

2.然后依次将不同的ssh添加代理,执行命令如下:

ssh-add ~/.ssh/id_rsa

ssh-add ~/.ssh/id_rsa_ldb

(2)上传者与我们的码云账号不一致

原来是早已设置了全局的账号,邮箱,我们如果想要使用second的账号和邮箱,则

1.找到项目所在目录下的 .git/文件夹,进入.git/文件夹,然后执行如下命令分别设置用户名和邮箱:

git config user.name "xxx"

git config user.email "[email protected]"

然后执行命令查看config文件:cat config

发现里面多了刚才配置的用户名和邮箱信息,即成功为该项目单独设置了用户名和邮箱

    [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
    [remote "origin"]
        url = https://github.com/xxx/xxxx.git
        fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
        remote = origin
        merge = refs/heads/master
    [user]
        name = xxx
        email = [email protected]

2,如果为所有项目设置默认的用户名和邮箱,则执行如下命令(即多了"--global"修饰,添加为全局变量):

    git config --global user.name"xxx"
    git config --global user.email"[email protected]"

参考:Git配置用户名与邮箱

如果有疑问的同学,请留言

 

你可能感兴趣的:(git)