因爲我的緣由須要在一臺電腦上部署兩個Hexo博客,原本覺得挺簡單,沒想到問題重重,首先是一個GitHub帳號只能搭建一個Hexo博客,所以就須要使用其餘GitHub帳號;其次是一臺電腦綁定兩個GitHub帳號,則須要兩對公鑰,在處理第二個問題時遇到的問題比較多,由於對這方面一竅不通,仍是小白,因此折騰了一下午才解決,網上好多教程我都看不懂,以爲不(自)夠(己)詳(太)細(笨),所以詳細記錄一下git
原理分析:github
- SSH的公鑰是GitHub做爲本地倉庫和遠程倉庫鏈接的惟一標識,一個公鑰只能對應一個GitHub帳戶,若是將一個相同的公鑰上傳到不一樣的GitHub帳戶,GitHub則沒法作出辨識,進而致使錯誤
- 一臺電腦,能夠生成多對公私鑰,能夠經過配置,將不一樣的公鑰上傳到不一樣的GitHub帳號,那麼就不存在單個公鑰綁定多個GitHub帳號的狀況存在了
相關問題報錯:web
- 同一臺電腦部署第二個Hexo博客執行
hexo g -d
時報錯:ERROR: Permission to xxxxxx/xxxxxx.github.io.git denied to xxxxxx.
- 添加新的 SSH 密鑰 到 SSH agent 執行
ssh-add xxx
時報錯:Could not open a connection to your authentication agent.
- 單獨設置用戶名/郵箱時報錯:
fatal: not in a git directory
如下是詳細過程:
前提:假設你的第二個博客相關配置操做已經順利完成,但使用hexo g -d
命令部署到 GitHub 上時報錯:ERROR: Permission to xxxxxx/xxxxxx.github.io.git denied to xxxxxx.
docker
首先咱們打開終端輸入ls ~/.ssh/
能夠查看當前已有的密鑰,顯示id_rsa
與 id_rsa_pub
說明已經有一對密鑰shell
首先使用如下命令進入 SSH根目錄下:緩存
cd ~/.ssh/
直接使用如下命令建立新密鑰,而後兩次回車便可:bash
ssh-keygen -t rsa -f ~/.ssh/這裏是新密鑰名稱 -C "這裏是你的郵箱"
注意區別新密鑰名稱和舊密鑰名稱,不要相同!!!hexo
使用下面命令行建立新密鑰:less
ssh-keygen -t rsa -C "這裏是你的郵箱"
回車後會出現:ssh
Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/you/.ssh/id_rsa):
注意此時須要你輸入新密鑰的名稱,一樣要注意區別新密鑰名稱和舊密鑰名稱,不要相同!!!以後再兩次回車,新密鑰建立完畢!
查看你的.ssh/根路徑下, 有沒有config文件,( 好比個人路徑爲C:\Users\Lenovo.ssh)沒有則使用如下命令建立一個config文件:
touch config
用記事本或者其餘工具打開config文件(注意config文件是沒有任何後綴名的),寫入如下配置:
#第一個帳號,默認使用的帳號,不用作任何更改 Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa #第二個新帳號,#"xxxxxx"爲前綴名,能夠任意設置,要記住,後面須要用到 Host xxxxxx.github.com HostName github.com User git IdentityFile ~/.ssh/這裏是你建立的新密鑰的名稱
輸入如下命令複製你建立的公鑰:
clip < ~/.ssh/這裏是你建立的新密鑰的名稱.pub
也能夠直接在.ssh目錄下找到你建立的新的公鑰,文件名爲新密鑰的名稱.pub
,(好比個人是trhx_rsa.pub
),用記事本打開,複製裏面的內容,而後打開你的新GitHub帳號主頁,依次進入Settings —> SSH and GPG keys —> New SSH key,將剛複製的內容粘貼到Key那裏,Title能夠隨便填,點擊Add Key保存。
使用命令cd ~/.ssh
cd到.ssh根目錄下,依次執行如下命令:
ssh-add -D ssh-add xxxxxx #舊密鑰名稱,通常是id_rsa ssh-add xxxxxx #新建立的密鑰名稱
若是執行以上命令出現錯誤:Could not open a connection to your authentication agent.
,那麼就須要先執行ssh-agent bash
,再執行以上命令
依次執行如下命令,第一個爲默認ssh_key驗證;第二個爲新的ssh_key驗證,其中「xxxxxx」爲你先前在config文件中的命名
ssh -T git@github.com ssh -T git@xxxxxxx.github.com
依次顯示如下信息, 則說明配置成功:
Hi 你的用戶名! You've successfully authenticated, but GitHub does not provide shell access.
執行以下命令,取消全局用戶名和郵箱配置(若是已經設置了全局的話):
git config --global --unset user.name git config --global --unset user.email
分別進入你的兩個Hexo博客.git目錄下執行如下命令單獨設置用戶名/郵箱:
git config user.name "這裏是用戶名" git config user.email "這裏是你的郵箱"
若是此時報錯:fatal: not in a git directory
,說明你沒有進入.git目錄下,具體路徑:\Hexo\.deploy_git\.git,.git目錄是隱藏的,須要你設置隱藏目錄可見
執行如下命令能夠查看設置是否成功
git config --list
打開你的第二個博客Hexo目錄下的_config.yml文件,找到deploy關鍵字,寫入如下配置並保存:
deploy: type: git repository: git@xxxxxx.github.com:你的用戶名/你的用戶名.github.io.git branch: master
好比個人配置:
deploy: type: git repository: git@love109.github.com:love109/love109.github.io.git branch: master
大功告成,再次執行hexo g -d就能成功將新的博客部署到 Github 上了