使用公共密钥认证方式连接SSH

2015-5-4 12:14 Herald 4338 FreeNASSSH

Public Key Authentication (公钥认证),是相对于密码认证的另外一种身份认证方式。相比密码认证方式,它更安全也更灵活,只是配置起来稍显困难。

通常,密码认证方式连接SSH服务器,要输入用户名和密码,系统检测通过则建立连接,反之则拒绝连接。如果系统被黑客攻击或欺骗,你与服务器交互时输入的用户密码很容易被攻击者窃取。

公钥认证可以解决这类问题,通过生成一个密钥对,包括一个公钥(可以给任何人)和一个私钥(由你自行保管且不给任何人)。私钥可生成签名,且没有该私钥的人无法伪造签名。任何拥有公钥的人都可以验证该签名的真实性。你本地计算机生成密钥对,把公钥复制到服务器。当你通过SSH连接FreeNAS服务器时,PuTTY会用你所创建秘钥对中的私钥生成签名,FreeNAS服务器会使用公钥来验证签名的真实性,验证通过则直接允许你登陆系统而无需输入密码。

这样一来,即使FreeNAS主机被黑客攻破,由于过程中未涉及密码输入的操作,同时私钥并不在服务器端,黑客只能窃取到一条签名,可惜签名是一次性的,无法重用,至此,黑客的窃取行动以此告败。

不过这还存在一些风险,如果存储在本地电脑的私钥未加保护,若有人获得了私钥,则可以以你的身份访问服务。因此,私钥通长应该使用密码短语进行加密,PuTTY在生成签名之前会要求你输入密码短语对私钥进行解密。即使他人窃取了你的私钥,在不知道密码短语的情况下就无法使用私钥了。

使用密码短语对私钥进行加密的确安全,但在易用性上却大打折扣,之前是输入密码,现在要输入密码短语,相比之下,密码短语更长更难输入。为了让身份认证的过程不那么痛苦,你可以考虑使用Pageant (PuTTY 的身份认证代理) 工具。运行Pageant后,你只需要输入一次密码短语即可,不论你开多少个PuTTY窗口,都无需重复输入密码短语解密私钥,Pageant会帮你处理。关闭Pageant,重启计算机后,Pageant会清空所有私钥解密相关的会话信息。再次运行Pageant亦是如此,输入一次密码短语解密私钥,剩下的工作交由Pageant来处理。

使用PuTTYgen生成秘钥对

PuTTYgen 是一款开源免费的秘钥生成器。它能帮助你生成用于 PuTTY、PSCP、Plink以及Pagent的公钥、私钥密钥对。支持生成 RSA 和DSA 两种类型的秘钥。PuTTYgen界面很简洁,如果你认真阅读并理解了前面介绍的内容,就能体会到这款小工具的简洁之处。界面Actions部分共有三行:

  • Generate a public/private key pair: 生成公/私密钥对
  • Load an existing private key file: 载入私钥(用以加密私钥或再次生成公钥)
  • Save the generated key: 用以保存生成的公钥和私钥

20150504120457

点击Generate按钮,如下图所示,界面提示你晃动鼠标,绿色进度条会随着你的鼠标晃动往前走,原理是通过鼠标的不规则晃动产生随机值,加强秘钥的安全性。

20150504121034

秘钥对生成后,如下图,界面Key部分文本框中是生成的公钥,可以把它复制到FreeNAS主机。红框标注的位置用来给私钥创建密码短语。

20150504121115

Save public key按钮,用来将生成的公钥保存成后缀为.pub的文本文件,同理,Save private key按钮,用来将私钥保存成后缀为.ppk的文本文件。如果不设置密码短语,在保存私钥时会弹出下图所示的提示窗口。

20150504121154

如果你想给私钥添加或修改密码短语,则点击Load an existing private key file这一项后面的Load按钮,选择.ppk私钥文件。设置或修改密码短语后,点击保存私钥按钮即可。

使用秘钥认证连接FreeNAS SSH

这里以Windows 8.1 为例,以root用户身份连接FreeNAS 9.3 SSH,首先使用PuTTYgen生成不带密码短语的密钥对。

20150504123546

使用文本编辑打开公钥文件test.pub,如下图

20150504123733

将公钥文件中的秘钥文本复制并粘贴到FreeNAS 9.3 系统中root用户的SSH Public Key中保存,如下图。

20150504123928

在Windows 8.1上运行PuTTY,在左侧树形菜单中依次找到 Connection > SSH > Auth,如下图,在箭头所示位置点击Browse…按钮,选择test.ppk私钥文件。

20150504124124

私钥设置好以后,点选左侧树形菜单的Session菜单,输入FreeNAS主机的IP地址,并点击Open按钮。

20150504124454

在 login as: 后面输入 root,按回车键,就自动打开FreeNAS的Shell了。

20150504124703

现在虽然已经可以成功通过秘钥认证方式连接SSH,不过下次再连接的时候还要重复选择秘钥,方便起见,你可以在PuTTY中给FreeNAS主机创建一个会话记录,把IP地址、秘钥等信息统统设置好,再使用时双击列表中的会话记录,就可以按照你提前做好的设置打开PuTTY了。

20150504125720

{{ headers["x-wp-total"] }} 条评论

{{ post_id = '1722' }}

回复 {{ reply_to }}