You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

AWS EC2实例SSH连接超时(Invalid argument)问题求助

解决EC2 SSH连接超时(Invalid argument)问题的排查步骤

遇到这种SSH连接报错的情况,别着急,咱们一步步来排查,大概率是几个常见的小问题导致的:

1. 先确认SSH命令的正确性

错误提示里的Invalid argument很大概率是命令本身有拼写错误或者参数问题,先检查这一点:

  • 确保你的SSH命令格式正确,比如针对Amazon Linux实例,正确命令应该是:
    ssh -i "your-key-pair.pem" ec2-user@ec2-xx-xx-xx-x.xxxxxxx-x.amazonaws.com
    
    (如果是Ubuntu实例,用户名换成ubuntu;CentOS则是centos,根据你的实例系统调整)
  • 仔细核对公有域名是否复制正确,有没有多余的空格、拼写错误(比如少写了.amazonaws.com的某个部分)

2. 验证DNS解析是否正常

有时候域名解析出问题也会导致这类错误:

  • 尝试ping一下EC2的公有域名,看能否解析到正确的IP:
    ping ec2-xx-xx-xx-x.xxxxxxx-x.amazonaws.com
    
  • 如果ping不通,用nslookupdig进一步确认解析结果:
    nslookup ec2-xx-xx-xx-x.xxxxxxx-x.amazonaws.com
    
    对比解析出的IP和你站点访问的34.207.113.186是否一致,如果不一致,可能是实例的公有IP变更(普通公有IP重启实例会变,但你站点能访问,大概率不是这个情况,不过还是确认下)

3. 重新检查安全组的SSH规则

虽然你之前配置过安全组,但本地IP动态变化是这类问题的常见诱因:

  • 登录AWS控制台,进入你的EC2实例详情页,找到关联的安全组
  • 检查入站规则:是否允许端口22的流量,来源是否是你当前的公网IP(如果之前设置的是固定IP,而你的本地IP今天变了,就会被拦截)
  • 可以临时把来源设为0.0.0.0/0(允许所有IP访问)测试,但测试完记得改回你的IP,保证安全性

4. 尝试用公有IP直接连接

既然你的站点能通过34.207.113.186访问,试试跳过域名直接用IP SSH:

ssh -i "your-key-pair.pem" ec2-user@34.207.113.186
  • 如果这样能成功,说明问题出在域名解析上;如果还是失败,那问题集中在实例本身、安全组或网络ACL上

5. 排查本地客户端或网络问题

  • 换一个SSH客户端试试,比如用PowerShell代替PuTTY,或者重启本地终端窗口,有时候客户端缓存会出问题
  • 检查本地防火墙/杀毒软件是否拦截了端口22的出站流量,临时关闭测试看看能否连接

6. 用EC2串行控制台排查实例内部问题(如果已开启)

如果以上都没解决,要是你开启了EC2串行控制台,可以用它登录实例内部:

  • 在AWS控制台的实例详情页,点击「连接」->「串行控制台」
  • 登录后检查SSH服务状态:
    # Amazon Linux/CentOS
    systemctl status sshd
    # Ubuntu
    systemctl status ssh
    
  • 如果服务未运行,重启服务:
    sudo systemctl start sshd  # 对应上面的服务名调整
    sudo systemctl enable sshd  # 设置开机自启
    

内容的提问来源于stack exchange,提问作者NIKHIL PARIHAR

火山引擎 最新活动