我们使用 VPC 在 EC2 上运行多个环境。在每个 VPC 中,我们配置了一个强化堡垒主机,用作网络的初始 SSH 入口点。
要访问我们私有 VPC 子网内的主机,用户首先通过 SSH 连接到堡垒主机,然后通过 SSH 连接到子网内的其他主机。为此,用户在建立初始 SSH 连接时转发 SSH 密钥(从 AWS 下载为 .pem 文件)。例如:
ssh -A [email protected]
ssh [email protected]
堡垒主机的全部目的是允许团队成员安全地访问我们的环境,前提是他们拥有两个 .pem 密钥。团队成员是值得信赖的,并且属于同一个组织。
我的问题是:在团队内部管理和分发 .pem 文件的最佳方法是什么:
- 团队成员可以找到他们希望连接的环境的正确 .pem 文件
- .pem 文件的存储是安全的
- 我们可以明确授权个人用户访问密钥
欢迎提出任何建议。
答案1
你不应该共享这些密钥。就这样。
每个用户都应生成自己的 SSH 密钥对,并将他们的公钥部署到他们需要访问的每个系统。私钥之所以这样命名,是有原因的 - 它们应该是每个用户私有的、由他们生成的、用密码保护的,并保存在该用户工作站的安全位置。即使是在一个完全信任的团队中,使用共享凭据也违背了所有最佳实践(出于各种原因)。
当您开始使用每个用户密钥时,您的其他两个问题都会消失。
此外,为了避免愚蠢的双 ssh 繁琐程序,只需在用户 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
完成此操作后,您的用户将能够运行单个命令直接连接到内部主机,例如$ ssh internal-host.example.com
。