这是我的问题
我在运行Ubuntu Server的AWS上有一个ec-2实例。在初始启动实例期间,我通过转到AWS控制台生成密钥对 - >密钥对 - >创建密钥对。它生成了一个关键字abcxxxx.pem并保存了它。
这是问题开始的地方
我负责一个多个开发人员上下班的项目。没有 太多想了,我把我的.pem文件分发给2-3个开发人员。他们 从那时起就离开了项目,我想将AWS访问限制为仅限活动 开发人员。基本上我不希望2-3个开发人员(使用.pem文件)访问我的机器。
对于所有新开发人员(我不再分发.pem文件),我通过粘贴访问AWS机器
public key
中有/home/ubuntu/.ssh/authorized_keys
。这个
让他们可以使用机器。
我的两个问题如下
/home/ubuntu/.ssh/authorized_keys
删除他们的公钥会有所作为吗?注意:我仍然拥有密钥,只有我可以访问AWS控制台。 我真的很担心这个密钥对业务(.pem文件的作用是什么?)和其他在线帖子似乎没有帮助(甚至AWS支持)。大多数在线帖子都会解决您丢失密钥并启动新实例等的情况。我联系了AWS支持,他们只是发送了link。我不明白这有什么帮助。
任何解决方案/精心解答的答案都会非常有用。
答案 0 :(得分:2)
在大多数情况下,您的问题实际上是关于如何在Ubuntu上administrate users和SSH。使用控制台生成的密钥对仅在实例首次启动时使用。始终可以通过instance metadata获取;你可以通过从EC2实例上的shell运行以下命令来看到:
$ curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
输出:
ssh-rsa ...等等等等......
首次启动EC2实例时,此密钥已复制到/home/ubuntu/.ssh/authorized_keys
,因为您正在使用的Ubuntu AMI已设置为执行此操作。但那只是一个惯例。这是唯一一次将密钥自动复制到任何地方的时间,因此从那里开始,您可以随心所欲地管理authorized_keys
文件。
关于您的具体问题,
authorized_keys
,那么拥有相应PEM文件的任何人仍然可以登录。要解决此问题,您需要小心地从{{ {1}}文件(例如,首先使绝对确保您可以使用其他密钥登录)。authorized_keys
的其中一个公钥的PEM文件(或一些粗略的等效文件)。authorized_keys
的有限权限(假设他们根本需要) 。然后,您可以随时撤销这些帐户。我希望这有帮助!
答案 1 :(得分:0)
捅了一下:
1)您不能从authorized_keys中删除密钥而不会失去对服务器的访问权限。当你使用pem通过SSH授权服务器时,那里的公钥向服务器证明你就是你所说的那个人。
2)对于新开发人员,当ssh到机器时,他们确实传入了一个密钥。它只是他们的钥匙,而且与您用来旋转机器的钥匙相比,它被隐含地传递出去了。在authorized_keys中它们的公钥的存在向服务器发出信号,一旦它们的ssh客户端证明它具有与授权文件中的公钥匹配的私钥,它们就被授权访问该机器。
3)我只需在盒子上创建其他用户,并通过设置/home/newusername/.ssh/authorized_keys将其设置为无密码登录,就像你今天为ubuntu用户设置它一样。当他们离开项目时,只需禁用和/或删除帐户
4)可以在不指定pem的情况下登录,但仍指定密钥。要查看密钥交换以及如何进行身份验证,请执行" ssh -vvv user @ machinename"你会看到整个ssh对话。如果您没有指定密钥,ssh客户端将在几个预定义位置查找一个密钥。您将看到客户端尝试使用这些密钥(您可能从〜/ .ssh / id_ *中选择了一些东西)。 pem不是魔术文件。它只是密钥(它可能包含公钥,公钥和私钥或公钥以及整个证书链)。
我建议你阅读公钥/私钥加密,了解它是如何工作的。
https://en.wikipedia.org/wiki/Public-key_cryptography