github或gitee的ssh和gpg切换

我个人习惯是凡SSH的都独自一对密钥,GPG同理。所以切换github、gitee等各种账号的时候就需要经常修改配置文件。

首先,确认自己github/gitee配置了SSH和GPG公钥

git config --list
# 至少要有下面几条,最后一条不是必须的
user.name=XXXXXXXX
user.email=YYYYYYY@gmail.com
user.signingkey=ZZZZZZZZZZZZ
commit.gpgsign=true

上面这些可以自己通过配置文件配置

cat ~/.gitconfig 

[user]
#	github-XXXX
	name = XXXX
	email = TYYYYY@153.com
	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
    
(Ashiamd的github个人学习笔记)[https://ashiamd.github.io/docsify-notes/#/README] ~小尾巴~
原文地址:https://www.cnblogs.com/Ashiamd/p/14011599.html