转换Putty ppk 文件到OpenSSH格式的Key文件
出于安全的考虑,我的服务器SSH远程认证去掉了通过用户名+密码模式的认证机制。转而使用Windows下的Puttygen生成的Key(以.ppk结尾)来验证登录,同时为了增强安全性,把SSH的端口配到了高端端口上。然而转到Mac平台下去之后,因其本身就带有Shell(Mac是基于FreeBSD进行的包装),所以本身也就有了SSH,用不上Putty了,但是因此所导致的问题是,我在Windows下的Key到了Mac平台上也就用不上了,在这种情况下,迫不得已,就只有去找转变认证机制的方法。
出于思维的习惯(人类避重就轻的惰性),一开始考虑的是把服务器改回使用用户名加密码的认证机制,但显然这不是一个明智的做法。于是就把眼光转向了转换ppk key的方向,基于这个想法,再想到解铃还得系铃人,所以目光自然又重新定位回了Putty这个开源的东东,下载下源码一读,发现它对Uninx的支持也还是很好的。那好,我只需要一个puttygen,编译无非是一点体力活。
以下是全过程:
1、下载Putty 0.6源代码并编译:
- wget http://putty.very.rulez.org/latest/putty-0.60.tar.gz
- tar xzvf putty-0.60.tar.gz
- cd putty-0.60
- configure –prefix=/opt/iApps/putty
- make
嗯,不用讶异,接下来没有make install的过程,因为我们不需要真的把Putty安装到/opt/iApps/putty里,当你在Make的时候,Puttygen已经编译完成,这里在Configure写上一个prefix路径,只是想提醒你,如果想安装的话,最好指定一个目录,以便于管理。
那么接下来转换我们Windows下的Putty key:
- putty-0.60/unix/puttygen my_ssh_key.ppk -O private-openssh -o my_openssh_key.ssh
顺利的生成my_openssh_key.ssh文件,此时就可以通过以下命令来进行登录了:
- ssh root@172.16.1.99 -i my_openssh_key.ssh -p 9999