git多帳號登入問題解析_linux shell

來源:互聯網
上載者:User

同一伺服器,同一託管平台,多個帳號問題

1、添加key

我們暫且以oschina為例。為了更好的說明問題,我們在oschina平台分別用帳號111建立項目test111和帳號222建立項目test222,記得項目私人化哦,不然我們也沒啥說的了。

在我們想要把項目test111 clone下來之前,需要先按照下面的步驟設定關聯的key

ssh-keygen -t rsa -C "111@163.com" // 郵箱是帳號111對應的郵箱

整個過程就斷行符號完事,操作起來那是相當的簡單!但是還沒完,可能你注意到了,斷行符號的過程中,有一句話是這樣提示的:

Your public key has been saved in /root/.ssh/id_rsa.pub.

沒錯,我們現在開啟這個檔案

cat /root/.ssh/id_rsa.pub

拷貝檔案裡面的內容, 然後開啟 http://git.oschina.net/keys 這個頁面,建立key,把複製的內容粘貼進來就好了。

這樣一來,我們就把伺服器上面的key跟oschina平台進行了關聯。

2、clone項目

接著我們通過git clone命令把test111項目clone下來,記得clone的地址是ssh而不是https哦,這個時候會提示我們輸入使用者名稱和密碼,其分別是oschina的帳號和密碼。

如果你手賤是以https的方式進行clone的,可以通過下面的命令重新設定遠程倉庫地址(沒有則可跳過此步驟)

// 移除之前的遠程倉庫地址git remote remove origin// 新增遠程倉庫地址為ssh,非httpsgit remote add origin git@git.oschina.net:wwolf/test111.git

3、多帳號相容問題

到這裡,對於test111項目pull push操作基本上都是沒有問題的了。如果說使用者222想在這台伺服器上面對項目test222進行管理,我們直接執行git clone git@git.oschina.net:222/test222.git之後,報錯了,提示如下:

Access denied.fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.

為什麼呢?首先最重要的問題肯定是key的問題了!因為我們之前並未層在這台伺服器增加key關聯到使用者222的oschina帳號!那我們就按照步驟1重新在伺服器上為使用者222添加一個key吧,不過需要注意的是,我們的key儲存的檔案要重新命名了,不然可就把使用者111建立的key覆蓋了!

ssh-keygen -t rsa -C "帳號222的郵箱@qq.com"//接下來會提示我們想要把key儲存在哪個檔案,重新輸入檔案名稱即可Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_2//接著斷行符號斷行符號斷行符號完事,重要的話說三遍!

然後我們登入帳號222的oschina帳號添加key

但是問題出現了,這個時候我們重新clone test222依舊提示我們沒許可權,怎麼回事???本篇文章的中心主題曝光了!廢話了一堆,開始說重點--------------------------

其實這個時候我們clone test222項目時,git是拿預設的id_rsa.pub檔案裡面的key去對比的,這肯定是有問題的嘛,因為222帳號並沒有添加這個key!那也就是說我們這裡如果clone test222的時候讓git拿著id_rsa_2.pub檔案裡面的key去驗證不就完事了嗎?是的,就是這樣!我們看實現步驟:

首先我們讓git識別我們新增的key

ssh-agent bashssh-add ~/.ssh/id_rsa_2

接著我們在~/.ssh/ 目錄下建立或者修改config檔案

#Host 是你遠程倉庫的地址,注意哦,如果有些伺服器做的ip連接埠轉寄,這裡不要帶上連接埠號碼Host git.oschina.net#HostName 是遠程倉庫的地址,同樣如果做的連接埠轉寄也不應帶連接埠號碼HostName git.oschina.net#Port 連接埠號碼,如果有做轉寄需要在這裡填寫連接埠號碼,沒有就不必要填#Port 8800#使用者User 111#識別key的檔案IdentityFile ~/.ssh/id_rsa#都指向同一個平台的話,下面的Host需要做個處理,因為我們在用這個key的時候根據Host從上到下進行尋找,不做修改肯定會先尋找到第一個key,依舊無效,隨便改就好了,其他參數不做特殊處理Host git222.oschina.netHostName git.oschina.net#Port 8800User 222IdentityFile ~/.ssh/id_rsa_2

可以看到,我們對222使用者的Host做了處理,那麼我們就需要修改下222的遠程倉庫地址了

// 原倉庫地址git@git.oschina.net:222/test222.git// 修改為git@git222.oschina.net:222/test222.git

也就是說這個時候使用者222隻需要執行命令

git clone git@git222.oschina.net:222/test222.git

就可以了!就可以了!!!

cd test222/
//發現git pull git push也都沒有任何問題

同一伺服器,不同託管平台,多個帳號問題

這多個平台的問題基本上就簡單了,為了舉例說明,我們用gitlab平台的333帳號的項目test333進行測試,注意哦,我們是註冊第三個帳號在上面兩個帳號的基礎之上進行的測試

git clone git@gitlab.com:333/test333.git
// 可想而知,同樣是沒權

因為沒那麼多郵箱,我們註冊gitlab依舊使用的是使用者222的郵箱,不過這對我們的操作沒任何影響,無非就是多建立一個id_rsa_3檔案而已,鑒於此,我們直接拷貝id_rsa_2.pub裡面的key到gitlab平台。

然後在~/.ssh/config檔案內添加gitlab平台的配置即可

Host gitlab.comHostName gitlab.com#Port 8800User 333//因為gitlab的郵箱跟使用者222一致,這裡用這個key,如果不一致,你仍然需要產生新的key,這裡引用新的key檔案IdentityFile ~/.ssh/id_rsa_2

PS:Git多個賬戶衝突問題解決

由於自己有兩個github帳號,最近在push項目時,突然發現一直提示的permission denied. 細看原來是用的另外一個github的帳號,不是當前origin所在的github對應的帳號。於是尋找了一stackoverflow上面的解決方http://stackoverflow.com/questions/14689788/multiple-github-accounts-what-values-for-host-in-ssh-config。

清除git的全域設定

git config --global user.name "your_name"git config --global user.email "your_email"

然後重新設定每個項目的非全域的使用者名稱和郵箱:

git config user.name "your_name" git config user.email "your_email" 

SSH配置

在~/.ssh目錄下面,使用ssh-keygen -C “your_email” -t rsa 產生公私秘鑰,當有多個github帳號的時候,可以產生多組rsa的公司密鑰。然後配置~/.ssh/config檔案(如果沒有的話請重新建立一個):

#第一個github項目帳號 Host first_project HostName github.com User first_user IdentityFile ~/.ssh/id_rsa_first #第二個git項目帳號 Host second_projectHostName github.com User second_user IdentityFile ~/.ssh/id_rsa_second 

從first項目拉取代碼:

git pull first master
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.