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

转自:https://blog.csdn.net/qq_27295403/article/details/85335765

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

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

Git配置多个SSH-Key

接下来我们开始操作
(一)我们应该去生成一个ssh-key:

xxxxx@xx.com是你的码云账号

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

ssh-keygen -t rsa -C 'xxxxx@xx.com' -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 xx@xx.com #写上你的码云账号
# gitee 第二个ssh-key 个人账号
Host gitee.ldb.com #这是主地址
HostName git.oschina.net #这是码云地址,不变
IdentityFile ~/.ssh/id_rsa_ldb #标识文件
User xx@xx.com #写上你的码云账号
(四)在码云上添加自己的公钥

(五)然后在回来终端使用命令测试是否配置成功: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 "xxx@xxx.com"

然后执行命令查看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 = xxx@xxx.com

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

    git config --global user.name"xxx"
    git config --global user.email"xxx@xxx.com"

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

如果有疑问的同学,请留言
————————————————
版权声明:本文为CSDN博主「大唐锦绣」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_27295403/article/details/85335765

原文地址:https://www.cnblogs.com/sky-heaven/p/12384362.html