在团队内管理 AWS SSH .pem 文件的最佳实践

Rob*_*ake 8 ssh amazon-ec2 amazon-web-services

我们正在使用 VPC 在 EC2 上运行许多环境。在每个 VPC 中,我们都配置了一个加固的堡垒主机,用作网络的初始 SSH 入口点。

要访问我们的私有 VPC 子网中的主机,用户首先通过 SSH 连接到堡垒主机,然后通过 SSH 连接到子网内的其他主机。为此,用户在建立初始 SSH 连接时转发 SSH 密钥(从 AWS 下载为 .pem 文件)。例如:

ssh -A ec2-user@bastion-host.on.aws
ssh ec2-user@app-server.on.aws
Run Code Online (Sandbox Code Playgroud)

堡垒主机的全部目的是允许团队成员安全地访问我们的环境,前提是他们拥有两个 .pem 密钥。团队成员在一个组织内受到信任。

我的问题是:我们在团队内管理和分发 .pem 文件的最佳方式是什么,以便:

  1. 团队成员可以为他们希望连接的环境找到正确的 .pem 文件
  2. .pem 文件的存储是安全的
  3. 我们可以明确授权个人用户访问密钥

任何建议最欢迎。

EEA*_*EAA 28

您不应该共享这些密钥。时期。

每个用户都应该生成自己的 SSH 密钥对,并且应该将他们的公钥部署到他们需要访问的每个系统中。私钥按原样命名是有原因的——它们应该对每个用户都是私有的,由他们生成,用密码保护,并保存在该用户工作站上的安全位置。即使有一个完全信任的团队,使用共享凭据也违背了那里的所有最佳实践(出于各种原因)。

当您开始使用每个用户的密钥时,您的其他两个问题都会消失。

此外,为了避免愚蠢的双 ssh rigamarole,只需将以下内容放入您的用户 ssh 配置中:

Host internal-host.example.com 
  Hostname internal-host.example.com 
  User ubuntu
  IdentityFile ~/.ssh/id_rsa
  ProxyCommand ssh bastion-host.example.com nc %h %p 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

执行此操作后,您的用户将能够运行单个命令直接连接到内部主机,例如$ ssh internal-host.example.com.

  • 不能足够支持这个答案! (2认同)