AWS如何访问私有子网EC2实例上部署的网站?
AWS私有子网Web服务访问故障解决方案
问题1:SSH动态端口转发要求输入未知通行密码
- 本地密钥文件权限校验:Linux/Mac环境下执行
chmod 600 /path/to/your/key.pem,确保密钥仅当前用户可读;Windows环境下右键密钥文件-属性-安全,禁用权限继承,仅保留当前用户的读取权限,删除其他所有用户的权限 - 堡垒机授权校验:通过AWS控制台EC2实例详情页的「连接」功能,使用EC2 Instance Connect直接登录堡垒机,执行
cat ~/.ssh/authorized_keys,确认当前使用的密钥对应的公钥已写入该文件,缺失的话直接追加公钥内容即可 - SSH服务配置校验:登录堡垒机后查看
/etc/ssh/sshd_config,确认PubkeyAuthentication yes、PasswordAuthentication no两项配置已开启,修改配置后执行sudo systemctl restart sshd生效
问题2:PuTTY生成的密钥导入AWS控制台失败
- AWS仅支持OpenSSH格式的RSA公钥导入,PuTTY Key Generator生成密钥后,不要直接导出公钥文件,复制工具界面中「Public key for pasting into OpenSSH authorized_keys file」文本框内的完整内容,直接粘贴到AWS导入密钥对的输入框即可
- 生成密钥时需选择RSA加密算法,密钥长度设置为2048位或4096位,不要使用其他加密算法或超过4096位的密钥,避免触发长度和格式不兼容问题
问题3:创建负载均衡时要求子网关联互联网网关
- 公网负载均衡仅要求负载均衡本身所在的子网绑定互联网网关,不需要后端服务所在的私有子网绑定网关,可行配置方案如下:
- 调试场景:使用SSH本地端口转发替代动态端口转发,执行命令
ssh -i KEY -L LOCAL-PORT:WEB-EC2-PRIVATE-IP:WEB-SERVICE-PORT ec2-user@BASTION-PUBLIC-IP,运行后直接访问本地http://localhost:LOCAL-PORT即可访问Web服务,不需要额外配置其他资源 - 公网暴露场景:创建公网应用负载均衡(ALB),关联你的公有子网,将私有子网内的Web EC2实例添加到ALB的目标组中,只要私有子网的安全组和路由表允许ALB所在的公有子网流量入站,即可正常对外提供服务
- 调试场景:使用SSH本地端口转发替代动态端口转发,执行命令
内容的提问来源于stack exchange,提问作者joe.moss
相关产品推荐
相关产品推荐

