amazon-web-services - 除非打开 SSH 端口,否则 AWS Session Manager 无法连接
问题描述
我正在尝试使用 AWS Systems Manager Session Manager 连接到我的 EC2 实例。
这些是私有 EC2 实例,没有公共 IP,位于通过 NAT 网关访问 Internet 的 VPC 中的私有子网上。
网络 ACL 完全打开(入站和出站),但没有允许 SSH 访问实例的安全组。
我完成了所有 Session Manager先决条件(SSM 代理、Amazon Linux 2 AMI),但是,当我尝试通过 AWS 控制台连接到实例时,我收到一个红色警告标志:“我们无法连接到您的例如。常见的原因包括“。
然后,如果我将安全组添加到允许 SSH 访问(入站端口 22)的实例并等待几秒钟,重复相同的连接过程,红色警告不会出现,我可以连接到实例。
尽管我知道这些实例是安全的(它们没有公共 IP 并且位于私有子网中),但我并不希望 Session Manager 要求向它们打开 SSH 端口。事实上,官方文档说它的好处之一是:“没有开放的入站端口,也不需要管理堡垒主机或 SSH 密钥”。
我搜索了相关的帖子,但找不到任何具体的内容。有什么想法我可能会错过吗?
谢谢!
解决方案
请确保您使用的是Session Manager Console,而不是 EC2 Console 来建立会话。
根据我自己的经验,我知道有时使用“连接”的 EC2 控制台选项最初不起作用。
但是,如果你去AWS Systems Manager
控制台,然后到Session Manager
你将能够Start session
到你的实例。这假设您的 SSM 代理、角色和 Internet 连接配置正确。如果是,您应该能够看到要为其启动 ssh 会话的 SSM 托管实例。
安全组也应该允许出站连接。如果您正确设置了所有内容,则不需要入站 ssh。
推荐阅读
- r - 将两个向量的坐标绘制成 0,1 矩阵
- sql - How to select rows with only Numeric Characters in Oracle SQL
- gradle - ResolutionException with Hibernate and JavaFx
- node.js - 我正在尝试使用 Express 和 Passport 创建 nodejs 登录系统,但出现错误
- jenkins-pipeline - 如何在 Jenkins 中将 Windows 凭据与登录用户链接以运行 Powershell 脚本
- typescript - SyntaxError:在 TypeScript CRA 项目中运行 jest 时出现意外标识符
- unix - Java VM 信号
- python - 如何检查字典是否可逆
- r - 如何找到与另一个特定变量高度相关的变量?
- c# - 如何检查从 Excel 解析的日期是正常格式(例如 01/01/2019)还是 OA 日期格式?