Linux机器通过浏览器访问AWS EC2实例及连接失败问题求助
关于AWS EC2实例浏览器访问及EC2 Instance Connect连接失败的解决方案
一、如何在Linux机器上通过Web浏览器访问AWS EC2实例
我整理了两种最常用的浏览器访问方式,你可以根据需求选择:
方式1:用EC2 Instance Connect做浏览器SSH连接
这是AWS官方自带的免客户端SSH方式,操作很简单:
- 先登录AWS管理控制台,找到EC2服务入口
- 在实例列表里选中你的Linux实例,点击顶部的「连接」按钮
- 在弹出的连接窗口中切换到「EC2 Instance Connect」标签
- 注意默认连接用户:Amazon Linux用
ec2-user,Ubuntu用ubuntu,CentOS用centos,别选错了 - 点击「连接」,很快就会弹出一个新标签页,里面就是SSH终端界面了
方式2:访问实例上的Web服务
如果你的EC2上跑着网站或Web应用,要通过浏览器访问的话,得先做两步配置:
- 先改安全组:找到实例关联的安全组,添加入站规则,允许HTTP(80端口)或HTTPS(443端口)的TCP流量,来源可以先设为
0.0.0.0/0测试(生产环境记得限制IP范围) - 然后拿到实例的公网IP或公网DNS(在实例详情页就能看到),直接在浏览器地址栏输入,就能访问你的Web服务了
二、解决EC2 Instance Connect浏览器连接失败的问题
你遇到的这个“建立实例连接时出现问题,登录失败”的错误,我之前帮不少用户排查过,大多是这几个环节出了问题,你可以一步步检查:
1. 先等实例完全启动
如果是刚启动的实例,别急着连,给它1-2分钟初始化时间——毕竟实例启动后要加载系统、配置网络,这段时间连接大概率会失败。等实例状态显示「运行中」,系统状态正常了再试。
2. 确认EC2 Instance Connect的必备条件
这个工具对环境有几个硬性要求,缺一个都连不上:
- 实例必须有公网IP或弹性IP,而且能正常访问公网(因为它需要和AWS的EC2 Instance Connect服务通信)
- 安全组要开对端口:添加入站规则,允许TCP 22端口的流量,来源可以选「EC2 Instance Connect」服务(或者临时用
0.0.0.0/0测试,生产环境记得改回AWS的IP范围) - 权限要够:你用的AWS账号得有
ec2-instance-connect:SendSSHPublicKey权限;如果实例关联了IAM角色,角色也要允许EC2 Instance Connect的相关操作 - 实例上得装对应软件包:
- Amazon Linux 2/2023默认自带,不用管
- Ubuntu 16.04+:用
sudo apt-get update && sudo apt-get install ec2-instance-connect安装 - CentOS/RHEL:用
sudo yum install ec2-instance-connect安装
3. 检查实例的SSH配置
有时候是实例本身的SSH设置挡了连接:
- 先确认
sshd服务在运行:如果能通过其他方式(比如本地SSH)连进去,就执行sudo systemctl status sshd看看状态 - 检查
/etc/ssh/sshd_config:确保PubkeyAuthentication yes、PasswordAuthentication no,而且没有禁止默认用户登录 - 检查用户目录权限:比如
ec2-user的~/.ssh目录权限得是700,authorized_keys文件权限是600——权限不对的话,EC2 Instance Connect没法写入临时公钥
4. 排查网络和子网问题
- 先确认你本地浏览器能正常访问AWS控制台,排除本地网络的问题
- 如果实例在私有子网,必须配置NAT网关,让实例能访问公网——不然它连不上AWS的EC2 Instance Connect服务,自然没法建立连接
5. 看系统日志找线索
如果以上都没问题,就去看实例的系统日志:
- 在EC2控制台实例详情页,点「监控」→「获取系统日志」
- 搜索和SSH、EC2 Instance Connect相关的内容,比如有没有公钥写入失败、sshd拒绝连接的报错,这些日志能帮你精准定位问题
内容的提问来源于stack exchange,提问作者manjeet
相关产品推荐
相关产品推荐

