1. 程式人生 > 實用技巧 >github或gitee的ssh和gpg切換

github或gitee的ssh和gpg切換

我個人習慣是凡SSH的都獨自一對金鑰,GPG同理。所以切換github、gitee等各種賬號的時候就需要經常修改配置檔案。

首先,確認自己github/gitee配置了SSH和GPG公鑰

git config --list
# 至少要有下面幾條,最後一條不是必須的
user.name=XXXXXXXX
[email protected]
user.signingkey=ZZZZZZZZZZZZ
commit.gpgsign=true

上面這些可以自己通過配置檔案配置

cat ~/.gitconfig 

[user]
#	github-XXXX
	name = XXXX
	email = [email protected]
	signingkey = asdnankdakndk

# .....省略其他內容

[commit]
	template = /Users/ashiamd/.stCommitMsg
	gpgsign = true


切換github/gitee賬戶的ssh和gpg,就只要修改上述~/.gitconfig 檔案,然後執行下面兩個主要流程

  1. SSH部分
    查詢 ssh-agent程序,然後kill,保證等下新增的ssh認證資訊是對應的使用者
    ps aux |grep 'ssh-agent'
    
    結果如下
    ashiamd           2685   0.0  0.0  4309300   2404   ??  S     4:04下午   0:00.02 /usr/bin/ssh-agent -l
    ashiamd           3226   0.0  0.0  4399480    792 s000  R+    4:09下午   0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox ssh-agent
    
    殺死 PID為2685的程序
    kill 2685
    
    ps aux |grep 'ssh-agent'
    ashiamd           3283   0.0  0.0  4399480    792 s000  R+    4:10下午   0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox ssh-agent
    
    檢視現有的ssh金鑰對,ssh新增使用者(隱私問題,把檔名都改了)
    ls ~/.ssh
    
    AAA          BBB      CCC       known_hosts
    AAA.pub      BBB.pub  CCC.pub   
    DDD            EEE      FFF     GGG
    DDD.pub        EEE.pub  FFF.pub GGG.pub
    config             HHH     III
    gitconfig-copy     HHH.pub III.pub
    
    ssh-add ~/.ssh/AAA
    
    檢視是否多出來ssh-agent,有就正常
    ps aux |grep 'ssh-agent'
    ashiamd           3785   0.0  0.0  4399480    792 s000  R+    4:15下午   0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox ssh-agen
    ashiamd           3765   0.0  0.0  4300084   2280   ??  S     4:15下午   0:00.01 /usr/bin/ssh-agent -l
    
  2. GPG部分
    同樣殺死gpg-agent
    ps aux |grep 'gpg-agent'
    ashiamd           2618   0.0  0.0  4468668   1616   ??  Ss    4:03下午   0:00.32 gpg-agent --homedir /Users/ashiamd/.gnupg --use-standard-socket --daemon
    ashiamd           4710   0.0  0.0  4399480    804 s000  S+    4:18下午   0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox gpg-agen
    
    
    kill 2618
    
    然後執行下面這條,之後git commit會要求輸入密碼(GPG生成金鑰時輸入過的)
    export GPG_TTY=$(tty)
    
    ps:如果不小心在輸入密碼的時候按了ctrl+C,會發現沒法正常輸入密碼了,這時候記得關掉當前terminal然後殺死對應的程序。
    這個時候會看到一個CPU跑了90%多的程序,kill它就對了,然後重新export GPG_TTY=$(tty)
    top