在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM