gui202420 发表于 2015-10-14 12:02:52

如何在Linux上最妥善地管理加密密钥?

存储SSH加密密钥和牢记密码可能是一件让人很头痛的事儿。不过遗憾的是,在如今恶意黑客和漏洞猖獗的年头,做好基本的安全防范措施是必不可少的做法。对于许多普通用户来说,这就意味着只是牢记密码,可能还要找到一款存储密码的优秀软件,因为我们提醒普通用户不要每个网站都使用一样的密码。但是对于从事不同IT行业领域的我们这些人来说,我们就需要在此基础上更进一步。我们还要处理SSH密钥之类的加密密钥,而不仅仅是密码。
一种场景如下:我在云上运行一台服务器,用于我的主git软件库。我有好多台办公用的计算机。所有那些计算机都需要登录进入到那台中央服务器,以便推送和获取内容。我设置了git以便使用SSH。git使用SSH时,git登录进入到服务器的方式实际上与启动命令行、使用SSH命令接入到服务器一样。为了配置一切,我在.ssh目录中创建了一个配置文件,里面含有的Host项提供了服务器名称、主机名称、登录用户以及密钥文件路径。然后,我只要输入下列命令,就可以测试一下这个配置:
ssh gitserver
很快我就看到了服务器的bash外壳。现在,我可以配置git,使用这同一个项,用存储的密钥登录进去。容易得很,除了有一个问题:对于用来登录进入到那台服务器的每台计算机而言,我都需要有一个密钥文件。这意味着会有不止一个密钥文件。我在这台计算机上有几个这样的密钥,在其他计算机上有几个这样的密钥。正如普通用户有无数个密码那样,我们IT人员到头来很容易会有无数个密钥文件。这该如何是好?
  清理乱局
在开始使用一款软件帮助管理密钥之前,你得做好一些基础工作,弄清楚应该如何处理密钥、我们提出的问题到底是否合理。而这首先需要你明白自己的公钥放在哪里、私钥又放在哪里。假设你已知道下列这些:
1. 公钥与私钥的区别
2. 为什么无法利用公钥生成私钥,但是却可以利用私钥生成公钥。
3. authorized_keys文件的用途以及它放在何处。
4. 你如何使用私钥,登录进入到在authorized_keys文件中有对应公钥的服务器。
这里有个例子。你在亚马逊网络服务(AWS)平台上创建一台云服务器时,就得提供一个SSH密钥,用来连接到你的服务器。每把密钥都有公开部分和私密部分。因为你希望自己的服务器保持安全,乍一看,你似乎把私钥放在那台服务器上,并将公钥贴身带着。毕竟,你不希望那台服务器可以公开访问,不是吗?但其实正好相反。

保管那把私钥,并放在身边,而不是放在某台远程服务器上。
你把公钥放在AWS服务器上,牢牢保管用来登录进入到服务器的私钥。你保管那把私钥,并放在身边,而不是放在某台远程服务器上,如上图所示。
原因如下:即便公钥被别人知道了,他们也无法登录进入到服务器,因为他们没有私钥。此外,如果有人确实设法闯入了你的服务器,他们发现的只是公钥。无法利用公钥生成私钥。所以,如果你在其他服务器上使用同样这个密钥,他们无法用该密钥来登录进入到其他那些计算机

页: [1]
查看完整版本: 如何在Linux上最妥善地管理加密密钥?