0%

Putty的ppk文件转成Xshell使用的key文件

前言

今天同学给我一个Putty远程登录使用的ppk文件(即后缀名为ppk)让我远程登录主机,但是我用的是Xshell,导入这个ppk文件时,遇到“Failed to import the user key!”错误。现在我们就来解决一下。

错误截图

这个错误表明导入的private key文件不是XShell所支持的,有三种可能:

  1. 将Public Key当成Private Key导入。
  2. 使用Putty的ppk文件。
  3. Key文件有多种格式(SSH1-RSA, SSH2-RSA, SSH2-DSA, SSH.COM, OPENSSH2-RSA, OPENSSH2-DSA, PPK, SSH2-IETF SECSH[RSA,DSA]),目前看来XShell支持SSH1-RSA, OpenSSH2-RSA, OpenSSH2-DSA, SSH.COM, NetSarang User Key。所以如果使用了标准的SSH2-RSA, SSH2-DSA这两种PrivateKey的同学请试着转换为OpenSSH格式(Tools->Convert Private Key to OpenSSH Format)后再导入。

解决方法

1、找到Putty安装目录下的PUTTYGEN.EXE,打开它,选择“Conversions”->“Import key”,选择要导入的ppk文件。导入后,下面的“Export OpenSSH key”选项由灰色变成可用状态,点击它,导出一个自己命名的文件,这个文件默认没有后缀名。导出时提示没有设置密码,点击“是”或者自己设置一个密码吧。

现在导出的这个文件就是Xshell登录需要的文件!

2、在Xshell中新建一个Session或修改已有的Session配置(Properties),找到“Connection”->“Authentication”,Method选择“Public Key”,User Name填写要登录的用户名,点击Browse按钮,然后Import刚才Putty导出的文件,由于这个文件我们刚才没有设置密码,所以Passphrase不用填,完成后如下。这样就由使用Putty登录转成使用自己熟悉的Xshell登录了。

总结

XShell可以生成OPENSSH2-RSA, OPENSSH2-DSA, SSH2-IETF SECSH(RSA,DSA)这几种格式的KEY文件并能识别,并能互相转换。SecucreCRT可以生成SSH1-RSA, SSH2-RSA, OPENSSH2-RSA, OPENSSH2-DSA这几种格式的KEY文件,并能互相转换。PuttyGEN可以生成SSH1-RSA, PPK, OPENSSH2-RSA, OPENSSH2-DSA, SSH.COM格式的KEY文件,除了SSH1格式都能进行互相转换。不过如果遇到如下报错,请更新你的puttygen.exe即可。Couldn’t load private key (ciphers other than DES-EDE3-CBC not supported)
由此可见OPENSSH2格式的key文件比较通用一些。