Windows下使用pageant为cygwin提供ssh密钥服务

Sun 01 September 2019 / In categories Tools

PuTTY, SSH

如果ssh-gen生成私钥的时候设置了口令,那么每次验证的时候都需要输入口令,有点麻烦。一个办法是使用ssh-agent启动一个密钥服务,然后通过ssh-add将某个密钥加入到服务中去,这样就不需要每次输密码。但是ssh-agent的使用还是不太方便,每次都需要手动启动,然后在shell中设置环境变量。

macOS在这一点上比较友好,可以通过keyring提供密钥服务,只需ssh-add -k就行了。不知道什么时候Windows的Credential Manager也能做到这一点。

所以一个变通的办法是使用PuTTY提供的Pageant程序来提供密钥服务器的角色。Pageant和PuTTY一起发行,所需要需要安装PuTTY:

scoop install putty

然后如果你之前的密钥是通过ssh-keygen生成的,则需要通过PuTTYgen将其转化为PuTTY能够识别的.ppk格式,具体参考Pageant refuses to load SSH-2 key generated with GitBash

接下来就是要设置Pageant的自启动,参考pageant-autoload-keys-at-startup.txt

To make Pageant automatically run and load keys at startup:

- Find the location of pageant.exe
- Windows key + R to open the 'run' dialog box
- Type: 'shell:startup' in the dialog box
- Create a shortcut to the pageant.exe and put into this startup folder.
- Right click on the shortcut and open 'Properties'
- In 'Target' add: "<route to>/pageant.exe" myprivatekeyname.ppk
- In 'Start in' add: "<route to myprivatekeyname.ppk>"
- Click on the shortcut link and check that Pageant has started and has loaded your keys

最后,为了在Cygwin里面使用Pageant提供的密钥服务,需要安装ssh-pageant:

apt-cyg install ssh-pageant

然后在Shell的启动脚本中加入下面内容:

# ssh-pageant
 eval $(/usr/bin/ssh-pageant -r -a "/tmp/.ssh-pageant-$USERNAME")

如果Cygwin窗口启动时显示:ssh-pageant pid 9590。那么差不多就成功了

其他参考

(完)

Load Disqus Comments