可怕,竟然能夠配置多個git sshkey

前言

有一天小豬心血來潮,以爲以前的 github 帳號id (pig) 不夠碎,因而註冊了一個新的 github 帳號 (weijiezhu) ,而且按照 github help 的套路完成了ssh的配置。由於同一個 sshkey (id_rsa) 不容許用在兩個帳號當中,因而他生成了一個新的 sshkey (github_rsa)。html

當他寫完代碼以爲本身很碎的時候,git push origin master 卻返回了一個錯誤。react

$ git push origin master
ERROR: Permission to weijiezhu/react-scaffold.git denied to pig.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

因而乎他跑了一個測試git

$ ssh -T git@github.com
Hi pig! You've successfully authenticated, but GitHub does not provide shell access.

wocao,怎麼仍是pig這個帳號呢。 明明弄了新的sshkey。github

通過一番搗騰,小豬彷彿發現了什麼shell

ssh 使用了默認的 id_rsa 密鑰進行加密,而這個好久之前建立的 sshkey 確實添加到 pig 帳號裏面了。bash

當訪問 github.com 的時候,github 服務會認爲你就是pig這個帳戶。ssh

噢~那好吧。把 pig 帳號裏面的 sshkey 刪掉吧,反正也不用了。而後把 id_rsa.pub 公鑰從新添加到 weijiezhu 這個帳號裏面,順便刪掉添加的 github_rsa.pub 公鑰。ide

$ pbcopy < ~/.ssh/id_rsa.pub

再次提交代碼。Absolutely done!gitlab

注意: 測試

上文和下文進階的用戶名和郵箱要配置好,若是有多個帳號,建議使用局部的。

git config user.name "用戶名"  //在config後加上--global即全局
git config user.email "郵箱"

進階

然而事情並無到此結束,裝完逼還想跑那是不行的。小豬往後發現本身是一個念舊的人。他想要同時使用兩個github。

那好吧,What a big deal~

這個時候咱們須要先找到 ~/.ssh/config 文件,而後往裏面添加以下配置

Host pig.github.com
        HostName github.com
        IdentityFile ~/.ssh/github_rsa

咱們指定 pig.github.com 這個"做用域"下的ssh鏈接統一指向 github.com ,而且使用以前生成好的 github_rsa 這個密鑰加密。

那麼默認的就是使用 ~/.ssh/id_rsa 這個密鑰加密咯。 而且HostName與「做用域」相同。這個就不須要咱們管了。

這個時候咱們測試一下唄。

$ ssh -T git@pig.github.com
Hi pig! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@github.com
Hi weijiezhu! You've successfully authenticated, but GitHub does not provide shell access.

: ) , orz , 這時候還差最後一步

就是修改一下咱們在 pig 克隆下來的項目的 remote 「做用域」 。

$ git remote rm origin
$ git remote add origin git@pig.github.com:pig/tinynote.git // 注意是 pig.github.com 噢?, 把這個理解爲一個「做用域」吧。
$ git push origin master
Everything up-to-date

一樣的,對於使用不一樣的git服務商,如(coding.net,gitlab等),能夠「東施效顰」地使用上文的進階方案來解決本地多個git帳號的問題。

這個時候小豬的隊友驚呼 ,Jesus Christ, u save my ass ! orz.

對於ssh無密碼登陸原理,或者.ssh/config配置不熟悉的能夠自行google進行延伸閱讀噢。

免責防噴: 若是上文描述哪裏有問題,請不吝賜教!

相關文章
相關標籤/搜索