Gpg4win和git的关联没有比较坑的地方,只需要配置一下gpg.program,其他配置同linux下。
重点在Windows下配置gpg-agent,让它支持ssh和putty的pageant。通过Google搜索一波,有许多文章有关于gpg-agent支持ssh和putty的内容。但是都是老版本的Gpg4win,很多已经失效。几经波折之后,终于成功。
软件安装列表:
Gpg4win 3.0.0 beta259 (2的最新版本尝试并不成功) 下载地址:https://files.gpg4win.org/Beta/gpg4win-3.0.0-beta259/
Git 2.13.2 64bit 下载地址:https://github.com/git-for-windows/git/releases/download/v2.13.2.windows.1/Git-2.13.2-64-bit.exe
putty 0.69 64bit 下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
- Gpg4win安装完成之后,生成key,要支持ssh还需要一个认证秘钥。
- 完成后打开Kleopatra的配置界面,进入GnuPG->Private Key。勾上ssh和putty。
- 这个时候需要重启gpg-agent,可以直接重启电脑或者
gpg-connect-agent reloadagent /bye
- 在cmd下执行 start-ssh-pageant.cmd
- 此时应当可以连接上agent,为了方便,我们在Git Bash下进行测试
- 直接在bash中执行
SSH_PAGEANT="$(command -v ssh-pageant)" if [ -x "$SSH_PAGEANT" ]; then eval $("$SSH_PAGEANT" -qra "${SSH_AUTH_SOCK:-${TEMP:-/tmp}/.ssh-pageant-$USERNAME}") fi unset SSH_PAGEANT
- 此时执行
ssh-add -l
或者ssh-add -L
已连接到gpg-agent,应当提示The agent has no identities.
- 直接在bash中执行
- 要让秘钥可以被gpg-agent使用,还需要将keygring添加到%AppData%\gnupg的sshcontrol文件中。执行
gpg --with-keygrip --list-keys
- 再次执行
ssh-add -l
或者ssh-add -L
,返回获取key信息。 - 可以正常使用putty连接服务器,或者用ssh协议git push了。
- 配置一下开机自动生效。
- 配置Windows环境变量,SSH_AUTH_SOCK=/tmp/.ssh-pageant-%USERNAME%
- 创建两个开机自启动脚本。
- gpg-agent.cmd
@echo off gpg-connect-agent.exe /bye
- ssh-pagent.cmd
@echo off start-ssh-pageant.cmd
- gpg-agent.cmd
参考资料:
https://github.com/git-for-windows/git/wiki/OpenSSH-Integration-with-Pageant
https://developers.yubico.com/PGP/SSH_authentication/Windows.html
http://www.bootc.net/archives/2013/06/09/my-perfect-gnupg-ssh-agent-setup/
Copyright © 2017 – 2018, Mjollnir. 除非另有声明,本网站采用知识共享“署名-非商业性使用-相同方式共享 3.0 中国大陆”许可协议授权。