ssh

Secure Shell(SSH)是一种加密传输协议,常用于连接Unix/Linux服务器。默认端口TCP 22.

常见的客户端有:putty、Xshell、SecureCRT、Termius(ios替代品)、MobaXterm

ssh用多了以后,基本上都升级到密钥对,最常见的密钥大致分为两种:putty相关的.ppk文件和openssh相关的rsa/.pub。

前段日子大学用的笔记本由于磁盘原因,几乎报废了,新笔记本转向了linux,一些之前没注意的问题也浮现出来了,windows和linux平台软件的差异,比如.ppk。
当初接触服务器是为了自建游戏服务器,博客和Hadoop测试都是后话了。然后最初看的教程里面,连服务器用的putty,所以后来上密钥对也是用的puttygen。但是linux里ssh不支持.ppk文件,需要转化。

各种不同的密钥文件

先做个简要的区分:

  • open-ssh生成的密钥对,公钥和私钥是分开的。id_rsa(id_rsa.pub)分别为私钥(公钥);
  • .ppk文件由Putty生,全称为PuTTY Private Key,单个文件包含了公钥和私钥;
  • .pem文件可以包含任何东西: 具有公共密钥的证书,SSH公钥,公钥私钥,具有公钥私钥的证书。 PEM是一个文本文件,可以用记事本打开。

文件转化

以Ubuntu为例,简要说明.ppk文件的转化:
首先需要安装putty-tools:

sudo apt install putty-tools -y
#ppk -> rsa/rsa.pub
puttygen /path/.../puttykey.ppk -O private-openssh -o ~/.ssh/id_rsa
puttygen /path/.../puttykey.ppk -O public-openssh -o ~/.ssh/id_rsa.pub
#ppk -> .pem
puttygen puttykey.ppk -O private-openssh -o ~/.ssh/newkey.pem
#rsa -> .ppk
puttygen openssh_rsa_keyname -o keyname.ppk

chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/keyname.xxx

Winodws就简单许多,打开puttygen.exe,按照文本说明进行操作即可。

参考资料:
www.ssh.com
www.openssh.com