用PuTTYgen在Windows下生成SSH密钥

如今,玩云计算的人越来越多,很多人都喜欢去租个云服务器做个博客或是挂一些需要长时间一直运行的程序。这些服务器也多数是Linux系统,但是服务器的问题是一个不可忽视的问题。常常能在日志中看到每天有大量IP尝试连接22端口,希望使用弱密码能够登录服务器。这些服务器被黑客攻下后往往会被用作DDOS肉鸡,造成重大的安全威胁。而实际上,用ssh密钥登录可以有效解决这一问题,至少在当下很难在有限的时间内根据rsa公钥破解出rsa私钥。

现在介绍Windows下用PuTTY gen工具生成SSH密钥的方法。

首先,打开PuTTY gen

点击Generate,然后在界面中晃动鼠标,PuTTY gen会根据鼠标移动的轨迹来生成一对rsa密钥

生成后结果如下图所示

之后,把这个Public Key复制下来,然后先登录到我们原来的服务器上。

由于OpenSSH Server默认读取用户主目录的.ssh/authorized_keys文件,所以我们把ssh的公钥放到该位置。

具体操作为,在用户主目录下建立.ssh文件夹,然后放置authorized_keys文件,在里面放上公钥

将刚刚复制的SSH公钥粘贴进去(PuTTY导出的密钥有时候会分行,请注意删除多余的换行符,authorized_keys里面可以放多个密钥,一行一个分开即可)

然后按Ctrl+X,按Y再按回车退出

之后,我们就可以使用刚刚生成的sshkey连接服务器了。

注意:SSH Pubkey是可以对外宣告的,但是Private Key一定要自己保存好。RSA采用非对称加密,具体原理参见我之前写的博文https://cyyself.name/2017/07/rsa-algorithm/,RSA身份认证原理一样,就是用客户端的Private Key加密一个指定的数据发送给服务器,如果服务器用Pubkey可以正确解开这个数据就证明这个用户是可信任的,就完成了用户鉴权。

扩展:如何将ppk文件转换为id_rsa和id_rsa.pub

部分软件(比如MySQL WorkBench)只支持读取id_rsa格式的ssh密钥,其实我们可以用手动转换的方法。

其中我选出来的这一行就是id_rsa格式的ssh私钥,我们把它复制出来,

然后前后分别加上

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

即可。

这个id_rsa密钥就可以拿给各类ssh软件使用了。如果你要从一台Android自带的命令行ssh登录到服务器的话,你可以把它存在~/.ssh/id_rsa文件中,其中~表示你的用户主目录,然后chmod 400 id_rsa,然后直接使用ssh即可。

发表评论

电子邮件地址不会被公开。 必填项已用*标注