Windows下Gpg4win、Git、ssh-pageant配置

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

  1. Gpg4win安装完成之后,生成key,要支持ssh还需要一个认证秘钥。
  2. 完成后打开Kleopatra的配置界面,进入GnuPG->Private Key。勾上ssh和putty。
  3. 这个时候需要重启gpg-agent,可以直接重启电脑或者
    gpg-connect-agent reloadagent /bye
  4. 在cmd下执行 start-ssh-pageant.cmd
  5. 此时应当可以连接上agent,为了方便,我们在Git Bash下进行测试
    1. 直接在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
    2. 此时执行ssh-add -l或者ssh-add -L已连接到gpg-agent,应当提示
      The agent has no identities.
  6. 要让秘钥可以被gpg-agent使用,还需要将keygring添加到%AppData%\gnupg的sshcontrol文件中。执行
    gpg --with-keygrip --list-keys

    查询到需要的keygring后添加进入文件。

  7. 再次执行ssh-add -l或者ssh-add -L,返回获取key信息。
  8. 可以正常使用putty连接服务器,或者用ssh协议git push了。
  9. 配置一下开机自动生效。
    1. 配置Windows环境变量,SSH_AUTH_SOCK=/tmp/.ssh-pageant-%USERNAME%
    2. 创建两个开机自启动脚本。
      1. gpg-agent.cmd
        @echo off
        gpg-connect-agent.exe /bye
      2. ssh-pagent.cmd
        @echo off
        start-ssh-pageant.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 中国大陆”许可协议授权。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据