Windows下使用gpg-agent认证ssh
前言
SSH登录中密钥认证肯定是比密码认证安全性更高一些(虽然我的ssh密码基本上都是用密码器生成的),但是密钥文件管理确实一个很大的问题,以前服务器(设备)不多的时候倒觉得无所谓,现在多起来了管理就特别麻烦。
很多时候我自己都忘记哪台服务器的密钥是哪个了,然后再加上又要解锁密码库获得64位+的密钥文件密码,感觉每次登录服务器都是一种折磨……
后来偶然一次在网上看到了yubikey使用gpg认证ssh的文章,感觉采用这种方式登录服务器是真的方便,不用担心密钥文件,并且只要随身带着key,还可以在其他地方登录服务器。
刚好我自己也有一个Canokey,平时用它进行git commit签名和Webauthn的登录,感觉还是有点大材小用了(然而光Webauthn这个功能就给我带来了很多方便),因此打算更加“压榨”一下我的Key(doge)
但是,网上的教程多半是在Linux平台上的,对于Windows上的教程真的是少之又少。要么是残缺不全的,要么就是过于复杂实用性极低的,或者干脆是不成功的……总之各种都有。
不过我也总结了一下那些教程,基本是围绕gpg-agent进行的,原理是让openssh使用gpg-agent进行认证而不是使用ssh-agent。然后就是各种妖魔方法,有设置SOCK环境变量的,有改gpg-agent.conf的,有用ps设置各种奇怪的环境变量的,有添加奇妙的计划任务的……
我只能说,在Windows平台上整这些不如去Linux整,怎么改都没问题,rm -rf /*
都行。
正文
这里的核心软件是Tabby
,一款开源,颜值在线(重要!!!),功能齐全,支持多语言(包括简体中文!!!)的超好用终端。(据说前身是Termius)
下面是本次用到的软件链接:
- Tabby https://tabby.sh/ 本次主角
- Gpg4win https://www.gpg4win.org/ 提供gpg以及gpg-agent
首先我们下载Gpg4win,下载完成后安装,安装时可以将Kleopatra也勾选安装,这样在生成PGP密钥和导入Key时会方便很多,当然你非要用gpg命令也行。
安装完成后生成自己的PGP密钥并导入智能卡中,具体的生成和导入以及使用子密钥的教程网上是一大片,可以自行搜索,使用Kleopatra的话那就更简单,这里就不再阐述了。
然后我们下载Tabby,下载完成后安装。
中文语言需要自行去设置里设置
这里我们点击右上角的设置按钮,进入配置和连接
,点击新建
按钮新建配置(注:这里不使用主界面标签卡旁边的按钮快速连接终端,因为这种方式默认采用密码和密钥登录,无法使用gpg代理登录)。
在弹出的窗口中选择SSH 连接
,填写自己主机相关信息即可,身份验证方式选择代理
,然后保存即可。
Tips:这里的
主机
请直接填写IP或者域名,不要像ssh那样用户名@地址
这样,否则无法正常连接主机!!!
现在不着急连接,还需要将gpg公钥导出添加到服务器~/.ssh/authorized_keys
内(没有就创建一个),记得在文件尾多追加一个换行。
并且这种方式并不会影响原来的密钥,你只要将gpg公钥在新的一行插入即可,这样服务器可以同时用两种密钥登录。
添加完成后重启服务器的ssh服务。
回到客户端这边,这时我们点击新添加出来的那个配置文件旁边一个类似播放的按钮连接服务器。
不出差错将会弹出输入智能卡PIN的窗口,输入完PIN即可成功连接服务器!
如果设置了需要触摸确认可能还需要触摸一下触摸点。
之后我们可以在主界面点击标签栏旁边的按钮(配置和连接),选择我们之前的配置快速连接。
Use this card to join MyBlog and participate in a pleasant discussion together .
Welcome to GoodBoyboy 's Blog,wish you a nice day .