如何在Terraform中为AWS安全组配置非22端口的SSH访问?
问题修复方案
1. 修正安全组规则的端口配置
你的错误核心在于aws_security_group_rule.inbound_ssh中的端口范围设置无效:from_port的值(28)大于to_port的值(22),AWS安全组不允许这种逻辑错误的端口范围定义,直接导致规则创建失败。
要配置单个非22端口(比如28)的SSH访问,需保证from_port和to_port的值一致,都设置为目标端口号。修正后的规则代码如下:
resource "aws_security_group_rule" "inbound_ssh" { from_port = 28 protocol = "TCP" security_group_id = aws_security_group.ws_sg.id to_port = 28 # 与from_port保持一致,定义单个端口 type = "ingress" cidr_blocks = [ "0.0.0.0/0" ] }
2. 同步修改EC2实例的SSH服务配置
安全组开端口只是网络层面的放行,你还需要修改目标EC2实例上的SSH服务监听端口:
- 登录EC2实例,编辑
/etc/ssh/sshd_config文件,将Port 22改为Port 28 - 重启SSH服务(Ubuntu用
sudo systemctl restart sshd,CentOS用sudo service sshd restart) - 确认实例本地防火墙(如iptables)未限制28端口的入站访问
关于AWS免费账户的疑问
AWS免费账户不会限制安全组的端口配置,免费套餐的限制仅针对资源使用额度(比如每月免费t2.micro实例时长、EBS存储容量等),和安全组规则的端口设置完全无关,你的错误与免费账户没有关系。
内容的提问来源于stack exchange,提问作者sivsoft
相关产品推荐
相关产品推荐

