Debian 12本地SSH连接EC2端口22超时,EC2间可通过Instance Connect正常连接
解决Debian 12本地机器无法SSH连接EC2实例的超时问题
你遇到的ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection timed out错误,说明本地机器无法和EC2实例的22端口建立TCP连接。既然通过EC2 Instance Connect登录一台EC2后能正常SSH另一台,问题就出在本地到EC2的网络路径,或者EC2针对本地IP的入站规则上。以下是具体排查和修复步骤:
检查EC2安全组入站规则
你的EC2实例绑定的安全组很可能没有允许来自本地Debian机器公网IP的SSH(22端口)流量。- 登录AWS EC2控制台,选中目标实例,进入其关联的安全组页面。
- 编辑入站规则,添加一条新规则:类型选SSH,协议TCP,端口22,来源填本地机器的公网IP(在Debian上执行
curl ifconfig.me获取)。 - 保存规则后重试SSH连接。
验证VPC网络ACL设置
网络ACL是VPC子网的防火墙,如果它阻断了22端口的入站流量或临时端口的出站流量,会导致连接超时。- 进入AWS VPC控制台,找到EC2实例所在子网对应的网络ACL。
- 确保入站规则中存在允许本地IP访问22端口的条目(规则编号小于100,动作允许)。
- 确保出站规则中允许本地IP访问1024-65535端口(SSH返回流量需要用到这些临时端口)。
检查本地Debian防火墙配置
本地防火墙可能阻断了22端口的出站流量。- 如果使用
ufw,执行sudo ufw status查看状态,确认是否有允许22/tcp出站的规则。 - 如果没有,执行
sudo ufw allow out 22/tcp添加规则。 - 也可以临时关闭
ufw(sudo ufw disable)测试是否是防火墙导致的问题,测试后记得重新开启。
- 如果使用
排查ISP限制
部分ISP会阻断22端口的出站SSH流量。尝试连接其他外部SSH服务器(比如朋友的服务器或公开测试服务器),如果同样超时,联系ISP解决限制。检查SSH密钥权限与sudo使用
虽然超时错误和权限无直接关联,但使用sudo可能导致密钥所有权问题。- 确保密钥文件权限严格:
chmod 600 my-key.pem。 - 尝试不使用
sudo执行SSH命令(除非你的用户没有密钥文件的访问权限)。
- 确保密钥文件权限严格:
内容的提问来源于stack exchange,提问作者Wilian Fiabani
相关产品推荐
相关产品推荐

