中文版 | English

网站首页 | 个人作品 | 博客 | 给我留言 | 经典分享 | 友情链接 | 黑白人生


ssh登陆密钥转换问题[转]

WinCVS with ssh- -

                                      多日以来,虽然找到设置CVSROOT的地方,可以使用口令的方式连接ssh,但是却一直不能通过公钥认证的方式连接ssh(在 Cygwin的终端窗口中,和在ssh secure shell client中都可以实现公钥认证登录)。

经多次google,终于发现问题所在:DevGuy :: View topic - wincvs and ssh woes - keys ignored, password requested 中最后一条留言。
"cvsnt use plink.dll, who can only recognize putty format keys I believe. You will need to convert openssh private key to putty format. Use puttygen to load the private key then save it."

原来WinCVS采用的是PuTTY的方式进行ssh连接,其所使用的密钥格式与OpenSSH和ssh secure shell client都不同。
ssh secure shell client 使用的是 IETF SECSH 格式,使用该格式的软件还有ssh2(此处不是指ssh协议版本2)
OpenSSH 使用的就是 OpenSSH 格式,因为其为脱离ssh的最早的SSH软件
PuTTY也是使用的自身的putty格式

而以前我使用的私钥不是OpenSSH格式的,就是IETF SECSH格式的,因此在PuTTY中(WinCVS中)无法登录,只要将私钥的格式改为PuTTY格式,即可登录。

所以,问题的关键归结于几种格式的转换
1. IETF SECSH --------------------------------------------------> OpenSSH
用OpenSSH的 ssh-keygen: $ ssh-keygen -i -f privatekey > newprivatekey

2. OpenSSH -----------------------------------------------------> IETF SECSH
用OpenSSH的 ssh-keygen: $ ssh-keygen -e -f privatekey > newprivatekey
用ssh2的 ssh-keygen2: $ ssh-keygen -x privatekey
3. PuTTY格式的转换:
使用puttygen.exe(包含于PuTTY中)




3.1 其他两种格式 ---------------------------------------------------> PuTTY格式
除了可以Load其本身格式的私钥外(.ppk),还可直接Load其他格式的私钥,并能自动识别以及可以转换成PuTTY格式密钥,比如OpenSSH的私钥:




3.2 也可将PuTTY格式 -------------------------------------------------> 其他两种格式


呵呵,经过几天苦心钻研,终于弄清楚了其中关系,可以写篇文章了。 ---------yrn@nj

上一篇: loadUserProfile and IIS7 - understanding temporary directory failures[转]
下一篇: HAM相关网站