服务器管理员向我发送了一个私钥供使用。为什么?


73

我应该访问服务器,以便将公司的暂存服务器和实时服务器链接到我们的部署循环中。他们那边的管理员设置了两个实例,然后在服务器上创建了一个用户供我们以SSH身份登录。我已经习惯了这么多。

我现在想到的是,我将把我的公钥发送给他们,该公钥可以放在他们的授权密钥文件夹中。但是,他们却给我发送了一个文件名id_rsa,该文件名中包含-----BEGIN RSA PRIVATE KEY-----通过电子邮件发送的文件名。这正常吗?

我环顾四周,从头开始可以找到大量资源来生成和设置自己的密钥,但是服务器的私钥开始却无济于事。我应该使用它来为自己生成一些密钥吗?

我会直接问系统管理员,但不想成为一个白痴,浪费大家在我们之间的时间。我是否应该忽略他发送给我的密钥,并要求他们将我的公共密钥放入他们的授权文件夹中?


6
我不会称其为正常或理智,但是由于您拥有私钥(假设他们已经将其添加为授权),因此可以像使用其他任何私钥一样使用它。您不需要相应的公钥,但是如果需要,您可以随时生成它:askubuntu.com/a/53555/158442
muru

34
获得-----BEGIN RSA PRIVATE KEY-----通过电子邮件是看到一个名为用户之后的下一个可怕的事情'); DROP DATABASE;--在你的用户名表。
德米特里·格里戈里耶夫

62
@DmitryGrigoryev对于'); DROP DATABASE;--在数据库表中看到用户名并不感到害怕-它表明您一直在正确地转义用户输入
HorusKol 2016年

19
您最肯定不能 “像使用其他任何私钥一样使用它”。这不是私人的。ERGO就不可能发挥它的创建功能。应该将其丢弃,并严厉打击UNIX管理员。@muru
user207421 '16

7
拥有此私钥的任何人都可以访问新服务器。假定管理员无论如何都不需要密钥就可以访问,因为他/她能够设置服务器,因此不会再有其他未经授权的访问的威胁。但是,由于这是您的钥匙,他现在可以可靠地模拟您。除您以外的其他人还有机会阅读电子邮件,然后他们也可以冒充您。
immibis

Answers:


116

我现在想到的是,我将把我的公钥发送给他们,该公钥可以放在他们的授权密钥文件夹中。

现在应该发生的事情在您的脑海中是正确的。

电子邮件不是安全的通讯渠道,因此,从适当的安全角度考虑,您(和他们)应该认为私钥已被破坏。

根据您的技术技能和想成为一名外交官,您可以做几件不同的事情。我建议以下之一:

  1. 生成您自己的密钥对,并将公共密钥附加到您发送给他们的电子邮件中,说明:

    谢谢!由于电子邮件不是私钥的安全分发方法,您能代替我的公钥吗?它是附加的。

  2. 感谢他们,并询问他们是否反对您安装自己的密钥对,因为通过电子邮件发送后,他们发送的私钥应被视为已泄露。

    生成您自己的密钥对,使用他们第一次发送给您的密钥进行登录,并使用该访问权限来编辑authorized_keys文件以包含新的公共密钥(并删除与受破坏的私有密钥相对应的公共密钥。)

底线:您不会看起来像个白痴。 但是,其他管理员可以很容易地看起来像个白痴。良好的外交可以避免这种情况。


根据MontyHarder的评论进行编辑:

我的建议行动方案均不涉及“在不告诉另一位管理员他做错了什么的情况下解决问题”;我只是巧妙地做到了,没有把他扔在公共汽车下。

不过,我会补充一点,我会跟进(礼貌),如果细微的线索不拾起:

您好,我看到您没有回应我有关电子邮件作为不安全渠道的评论。我确实想确信这种情况不会再次发生:

您了解我为什么要针对私钥的安全处理提出这一点吗?

最好,

托比


9
+1最佳答案。而且我要补充一点:请特别小心,因为该sysadmin已被证明是不称职的。最好(而不是如果)他/她永久弄坏服务器的时候盖好后盖。
dr01

2
谢谢。我使用了一些微妙的措辞,并将我的公钥发送了出去。一切看起来都解决了,但是我将取消他现在发送给我的密钥的授权。
托比

27
不是说另一个管理员“可以看起来像个白痴”。这是另一位管理员做了一些愚蠢的事情。我只能想到一种情况,在这种情况下,应在机器之间共享私钥,即通过相同的名称(循环DNS解析等)访问服务器池,并且必须提供相同的SSH主机密钥,以便自动化流程将接受其名称。在这种情况下,同一个人将是所有服务器的管理员,并且无需外部参与即可处理传输。
Monty Harder

21
@zwol在我的工作中,我们有一个“不怪罪”的哲学,该哲学理解我们会犯错,但将两次犯同样的错误作为重中之重。但是,为了避免两次犯同样的错误,您必须知道这是一个错误,这就是为什么我不能投票赞成OP只是解决问题而不告诉其他管理员他做错了什么的原因。我选择将错误称为“愚蠢的”,而不是仅仅出于概述的原因而称呼管理员名称。(但我不确定您的结论在括号中是否表达了有意义的区别。)
蒙迪·哈德

8
@LightnessRacesinOrbit,我怀疑您可能对“外交”的含义不完整。您是否尝试过用诸如韦伯斯特的《第三本新国际词典》这样的好字典来清除它?
通配符

34

我是否应该忽略他发送给我的密钥,并要求他们将我的公共密钥放入他们的授权文件夹中?

是的,这正是您应该做的。私钥的全部意义在于它们是私钥,这意味着只有您拥有私钥。由于您是从管理员那里收到的密钥,因此他也有。这样他就可以在任何时间模仿您。

密钥是否通过安全通道发送给您无关紧要:即使您亲自收到了私钥,也不会改变任何事情。尽管我同意这样的说法,即通过电子邮件发送敏感的加密密钥是轻而易举的事:您的管理员甚至没有假装已经制定了某种安全策略。


6
而且由于OP无法知道管理员的计算机的安全性(从故事的角度来看,可能非常不安全),因此他应该假定私钥也已经(或将要)泄露给其他人。通过电子邮件发送私钥只是信息安全无能为力的奖励事实。
dr01 '16

1
您可以假设能够创建用户的管理员将不需要您的私钥来冒充您。
Max Ried

3
@MaxRied使用适当的安全日志可能很难做到。使用您的私钥,他甚至不需要模拟日志。就像具有重设密码功能与知道密码一样。
德米特里·格里戈里耶夫

@DmitryGrigoryev他总是可以向您的authorized_keys文件添加另一个密钥...
Max Ried

4
我指的是@MaxRied /var/log/secure类似的东西,我敢肯定,太空技巧不会骗过这个。
德米特里·格里戈里耶夫

14

在我看来,管理员为您生成了一个私钥/公钥对,将公钥添加到了authorized_keys中并向您发送了私钥。这样,您只需在与服务器的ssh会话中使用此私钥即可。无需自己生成密钥对或向管理员发送公共密钥到您可能已损坏(总是认为最坏的情况:P)的私钥。

但是,我不信任通过未加密邮件发送给您的私钥。

我的方法是:使用私钥登录一次,将您自己的公钥添加到服务器上的authenticated_keys中(替换原始的公钥),然后丢弃此email-private-key。然后,您可能要感谢管理员,他/她/它为您提供了私钥,但是您希望此类信息/密钥不通过电子邮件发送(或完全)。


3
@Toby我能想象给他们发送私钥的唯一原因是他们不了解他们使用的工具。而且,您可以-i在命令行上使用以选择要使用的私钥。
kasperd '16

18
@kasperd 能想象到的原因是系统管理员工作过度,他决定通过电子邮件向那些不太懂技术的用户解释如何正确生成密钥对并发送密码的麻烦远远超过了通过电子邮件发送私钥的风险。公钥返回。
mattdm '16

1
您可以自己解决此问题的妙处。与等待管理员为新密钥对安装公共密钥相比,立即自己做起来更好。避免使用不再秘密的私钥没有任何帮助;它只会让任何潜在的窃听者更长久地使用它,然后才能进入并从中删除它authorized_keys(在添加+测试您自己的东西之后)。
彼得·科德斯

4
@mattdm那是完全合乎逻辑的,但令人恐惧。一个无法生成密钥对并向我发送公钥的人,使用我给他的私钥可能不会做得更好。
Monty Harder

1
@mattdm,很公平,但是由于我是要求他完成所有这些工作的人,所以我很难相信他以为我不知道如何与ssh建立联系。如果有什么措施,他采取的措施会更加令人困惑,因为我只知道使用公钥的基本通用方法。:x
Toby
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.