欢迎光临杨雨的个人博客站!

杨雨个人网站-杨雨个人博客-杨照佳

杨雨个人博客网站

关注互联网和搜索引擎的个人博客网站

首页 > 服务器 >

在Linux上怎样打点加密密钥?打点加密密钥的最佳体验

发布时间:2016-12-12  编辑:杨雨个人博客网站   点击:   

存储 SSH 的加密秘钥和记着暗码一向是一个让人头疼的题目。可是不幸的是,在当前这个布满了恶意黑客和进攻的天下中,根基的安详提防是必不行少的。对付很多平凡用户来说,大大都人只能是记着暗码,也也许探求到一个好措施去存储暗码,正如我们提示这些用户不要在每个网站回收沟通的暗码。

在 Linux 上打点加密密钥的最佳体验在 Linux 上打点加密密钥的最佳体验

可是对付在各个 IT 规模的人们,我们必要将这个工作进步一个层面。我们必要行使像 SSH 密钥这样的加密秘钥,而不可是暗码。
假想一个场景:我有一个运行在云上的处事器,用作我的主 git 库。我有许多台事变电脑,全部这些电脑都必要登录到这此中央处事器去做 push 与 pull 操纵。这里我配置 git 行使 SSH。当 git 行使 SSH 时,git 现实上是以 SSH 的方法登录随处事器,就仿佛你通过 SSH 呼吁打开一个处事器的呼吁行一样。为了把这些设置好,我在我的 .ssh 目次下建设一个设置文件,个中包括一个有处事器名字、主机名、登任命户、密钥文件路径等信息的主机项。之后我可以通过输入如下呼吁来测试这个设置是否正确。

ssh gitserver

很快我就可以会见随处事器的 bash shell。此刻我可以设置 git 行使沟通设置项以及存储的密钥来登录处事器。这很简朴,只是有一个题目:对付每一个我要用它登录处事器的电脑,我都必要有一个密钥文件,那意味着必要密钥文件会放在许多处所。我会在当前这台电脑上存储这些密钥文件,我的其他电脑也都必要存储这些。就像那些有出格多的暗码的用户一样,我们这些 IT 职员也被这些出格多的密钥文件沉没。怎么办呢?

整理

在我们开始辅佐你打点密钥之前,你必要有一些密钥应该怎么行使的基本常识,以及大白我们下面的提问的意义地址。同时,有个条件,也是最重要的,你应该知道你的公钥和私钥该放在那边。然后假设你应该知道:

1.和私钥之间的差别;
2.么你不行以从公钥天生私钥,可是反之则可以?
3.horized_keys文件的目标以及内里包括什么内容;
4.行使私钥去登录一个你的对应公钥存储在其上的 authorized_keys文件中的处事器。

这里有一个例子。当你在亚马逊的收集处事上建设一个云处事器,你必需提供一个用于毗连你的处事器的 SSH 密钥。每个密钥都有一个果真的部门(公钥)和私密的部门(私钥)。你要想让你的处事器安详,乍看之下你也许应该将你的私钥放随处事器上,同时你本身带着公钥。事实,你不想你的处事器被果真会见,对吗?可是现实上的做法正好是相反的。

在 Linux 上打点加密密钥的最佳体验在 Linux 上打点加密密钥的最佳体验

你应该把本身的公钥放到 AWS 处事器,同时你持有效于登录处事器的私钥。你必要掩护好私钥,并让它处于你的节制之中,而不是放在一些长途处事器上,正如上图中所示。

缘故起因如下:假如公钥被其他人知道了,它们不能用于登录处事器,由于他们没有私钥。进一步说,假若有人乐成攻入你的处事器,他们所能找到的只是公钥,他们不行以从公钥天生私钥。同时,假如你在其他的处事器上行使了沟通的公钥,他们不行以行使它去登录此外电脑。

这就是为什么你要把你本身的公钥放到你的处事器上以便通过 SSH 登录这些处事器。你持有这些私钥,不要让这些私钥离开你的节制。

可是尚有一点贫困。试想一下我 git 处事器的例子。我必要做一些决议。偶然我登录架设在此外处所的开拓处事器,而在开拓处事器上,我必要毗连我的 git 处事器。怎样使我的开拓处事器毗连 git 处事器?显然是通过行使私钥,但这样就会有题目。在该场景中,必要我把私钥安排到一个架设在此外处所的处事器上,这相等伤害。

一个进一步的场景:假如我要行使一个密钥去登录很多的处事器,怎么办?假如一个入侵者获得这个私钥,这小我私人就能用这个私钥获得整个处事器收集的权限,这也许带来一些严峻的粉碎,这很是糟糕。

同时,这也带来了其它一个题目,我真的应该在这些其他处事器上行使沟通的密钥吗?由于我适才描写的,那会很是伤害的。

最后,这听起来有些紊乱,可是确实有一些简朴的办理方案。让我们有层次地组织一下。

(留意,除了登录处事器,尚有许多处所必要私钥密钥,可是我提出的这个场景可以向你展示当你行使密钥时你所面临的题目。)

通例口令

当你建设你的密钥时,你可以选择是否包括一个密钥行使时的口令。有了这个口令,私钥文件自己就会被口令所加密。譬喻,假如你有一个公钥存储在处事器上,同时你行使私钥去登录处事器的时辰,你会被提醒输入该口令。没有口令,这个密钥是无法行使的。可能你也可以设置你的密钥不必要口令,然后只必要密钥文件就可以登录处事器了。

在 Linux 上打点加密密钥的最佳体验在 Linux 上打点加密密钥的最佳体验

一样平常来说,不行使口令对付用户来说是更利便的,可是在许多环境下我凶猛提议行使口令,缘故起因是,假如私钥文件被偷了,偷密钥的人如故不行以行使它,除非他可能她可以找到口令。在理论上,这个将节减你许多时刻,由于你可以在进攻者发明口令之前,从处事器裳佚公钥文件,从而掩护你的体系。虽然尚有一些行使口令的其余缘故起因,可是在许多场所这个缘故起因对我来说更有代价。(举一个例子,我的 Android 平板上有 VNC 软件。平板上有我的密钥。假如我的平板被偷了之后,我会顿时从处事器裳佚公钥,使得它的私钥没有浸染,无论有没有口令。)可是在一些环境下我不行使口令,是由于我正在登录的处事器上没有什么有代价的数据,这取决于情境。

处事器基本办法

你怎样计划本身处事器的基本办法将会影响到你怎样打点你的密钥。譬喻,假如你有许多用户登录,你将必要抉择每个用户是否必要一个单独的密钥。(一样平常来说,应该云云;你不会想在用户之间共享私钥。那样当一个用户分开组织可能失去信赖时,你可以删除谁人用户的公钥,而不必要必需给其他人天生新的密钥。相似地,通过共享密钥,他们能以其他人的身份登录,这就更糟糕了。)可是其它一个题目是你怎样设置你的处事器。举例来说,你是否行使像 Puppet 这样器材设置大量的处事器?你是否基于你本身的镜像建设大量的处事器?当你复制你的处事器,是否每一个的密钥都一样?差异的云处事器软件应承你设置怎样选择;你可以让这些处事器行使沟通的密钥,也可以给每一个处事器天生一个新的密钥。

假如你在操纵这些复制的处事器,假如用户必要行使差异的密钥登录两个差异可是大部门都一样的体系,它也许导致夹杂。可是另一方面,处事器共享沟通的密钥会有安详风险。可能,第三,假如你的密钥有除了登录之外的必要(好比挂载加密的驱动),那么你会在许多处所必要沟通的密钥。正如你所看到的,你是否必要在差异的处事器上行使沟通的密钥不是我能为你做的抉择;这个中有衡量,你必要本身去抉择什么是最好的。

最终,你也许会有:
1.登录的多个处事器
2.用户登录到差异的处事器,每个都有本身的密钥
3.用户行使多个密钥登录到差异的处事器

(假如你正在此外环境下行使密钥,这个同样的普适理论也能应用于怎样行使密钥,必要几多密钥,它们是否共享,你如那里理赏罚公私钥等方面。)

安详要领

相识你的基本办法和特有的环境,你必要组合一个密钥打点方案,它会指导你怎样去分发和存储你的密钥。好比,正如我之条件到的,假如我的平板被偷了,我会从我处事器裳佚公钥,我但愿这在平板在用于会见处事器之前完成。同样的,我会在我的整体打算中思量以下内容:
1.可以放在移动装备上,可是必需包括口令;
2.有一个可以快速地从处事器裳佚公钥的要领。

在你的环境中,你也许抉择你不想在本身常常登录的体系上行使口令;好比,这个体系也许是一个开拓者一天登录多次的测试呆板。这没有题目,可是你必要调解一点你的法则。你可以添加一条法则:不行以通过移动装备登录该呆板。换句话说,你必要按照本身的状况构建你的准则,不要假设某个方案放之四海而皆准。

软件

至于软件,令人受惊的是,实际天下中并没有许多好的、靠得住的存储和打点私钥的软件办理方案。可是应该有吗?思量下这个,假如你有一个措施存储你全部处事器的所有密钥,而且这个措施被一个快捷的密钥锁住,那么你的密钥就真的安详了吗?可能相同的,假如你的密钥被安排在你的硬盘上,用于 SSH 措施快速会见,密钥打点软件是否真正提供了任何掩护吗?

可是对付整体基本办法和建设/打点公钥来说,有很多的办理方案。我已经提到了 Puppet,在 Puppet 的天下中,你可以建设模块以差异的方法打点你的处事器。这个设法是处事器是动态的,并且不必要准确地复制互相。这里有一个智慧的要领,在差异的处事器上行使沟通的密钥,可是对付每一个用户行使差异的 Puppet 模块。这个方案也许得当你,也也许不得当你。

可能,另一个选择就是完全换个差异的档位。在 Docker 的天下中,你可以采纳一个差异的方法,正如关于 SSH 和 Docker 博客所描写的那样。

在 Linux 上打点加密密钥的最佳体验在 Linux 上打点加密密钥的最佳体验

可是怎么样打点私钥?假如你搜刮过的话,你无法找到许多可以选择的软件,缘故起因我之条件到过;私钥存放在你的硬盘上,一个打点软件也许无法提到更多特另外安详。可是我行使这种要领来打点我的密钥:

起首,我的 .ssh/config 文件中有许多的主机项。我要登录的都有一个主机项,可是偶然我对付一个单独的主机有不止一项。假如我有许多登录方法,就会呈现这种环境。对付安排我的 git 库的处事器来说,我有两个差异的登录项;一个限定于 git,另一个用于一样平常用途的 bash 会见。这个为 git 配置的登录选项在呆板上有极大的限定。还记得我之前说的我存储在长途开拓呆板上的 git 密钥吗?好了。固然这些密钥可以登录到我个中一个处事器,可是行使的账号是被严酷限定的。

其次,大部门的私钥都包括口令。(对付必要多次输进口令的环境,思量行使 ssh-agent。)

再次,我有一些我想要越发警惕地掩护的处事器,我不会把这些主机项放在我的 host 文件中。这越发靠近于社会工程方面,密钥文件还在,可是也许必要进攻者耗费更长的时刻去找到这个密钥文件,说明出来它们对应的呆板。在这种环境下,我就必要手动打出来一条长长的 SSH 呼吁。(没那么可骇。)

同时你可以看出来我没有行使任何出格的软件去打点这些私钥。

我们无意会在 linux.com 收到一些题目,扣问打点密钥的好软件的提议。可是退一步看,这个题目究竟上必要从头思索,由于没有一个普适的办理方案。你问的题目应该基于你本身的景象。你是否简朴地实行找到一个位置去存储你的密钥文件?你是否探求一个要领去打点多用户题目,个中每小我私人都必要将他们本身的公钥插入到 authorized_keys文件中?

通过这篇文章,我已经席卷了这方面的基本常识,但愿到此你大白怎样打点你的密钥,而且,只有当你问出了正确的题目,无论你探求任何软件(乃至你必要其它的软件),它城市呈现。但愿可以辅佐到各人!

本文地址:http://itbyc.com/server/14948.html
转载请注明出处。
分享是一种快乐,也是一种美德:
博客首页 | WEB开发 | 网站运营 | CMS使用教程 滇ICP备14002061号-1