You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac搭建单机/AWS EC2 Hadoop集群出现SSH连接被拒故障

Hadoop集群搭建SSH Connection Refused错误排查修复

两类场景下的报错均与Hadoop程序本身无关——你已经可以正常执行hadoop/hdfs/yarn相关命令,说明Hadoop二进制安装无损坏,connection refused是SSH链路不通导致的,按对应场景逐一排查即可:

场景1:单机模式ssh localhost连接被拒

按以下顺序排查修复:

  • 检查本地sshd服务运行状态
    Ubuntu/Debian系执行sudo systemctl status ssh,CentOS/RHEL系执行sudo systemctl status sshd,如果服务状态为inactive/未运行,直接执行启动命令并设置开机自启:
    # Ubuntu/Debian
    sudo systemctl start ssh && sudo systemctl enable ssh
    # CentOS/RHEL
    sudo systemctl start sshd && sudo systemctl enable sshd
    
  • 校验SSH监听端口与配置匹配
    执行sudo netstat -tulpn | grep sshd,默认配置下sshd会监听0.0.0.0:22端口。如果你的~/.ssh/config中自定义了SSH连接端口,必须和sshd实际监听的端口保持一致,禁止出现配置端口与服务监听端口不匹配的问题。
  • 修正SSH目录与文件权限
    SSH对权限校验规则极严,权限不符合会直接拒绝连接,依次执行以下命令修正权限:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    chmod 644 ~/.ssh/config
    chmod 600 ~/.ssh/id_rsa
    
    如果尚未生成免密密钥,先执行ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa生成密钥对,再执行cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys把公钥加入授权列表。
  • 放通本地防火墙22端口
    Ubuntu执行sudo ufw allow 22,CentOS执行sudo firewall-cmd --add-port=22/tcp --permanent && sudo firewall-cmd --reload,避免防火墙拦截本地回环的SSH请求。

场景2:EC2多节点集群scp传输连接被拒

注意不要直接使用教程提供的示例EC2地址,替换为你自己实际创建的实例地址后,按以下顺序排查:

  • 验证基础网络连通性
    执行ping 你的EC2实例公网IP,如果ping不通,先检查EC2实例是否处于运行状态、是否正确绑定公网IP、VPC路由表是否配置了公网访问网关。
  • 检查EC2安全组规则
    安全组入方向规则必须放通22端口,源地址设置为你当前操作节点的公网IP(测试阶段可临时设置为0.0.0.0/0,生产环境禁止这么配置),不要仅放通内网网段导致公网访问被拦截。
  • 校验EC2实例内部SSH服务状态
    通过AWS控制台自带的EC2 Instance Connect功能登录目标实例,按照单机场景的步骤检查sshd服务是否启动、端口是否正常监听、文件权限是否正确,部分第三方EC2镜像默认不会自动启动sshd服务。
  • 核对scp命令参数
    1. 如果EC2实例使用自定义密钥对登录,scp命令必须添加-i 你的私钥文件本地路径.pem参数,同时执行chmod 600 你的私钥文件.pem修正私钥权限,否则会被SSH直接拒绝;
    2. 确认登录用户名正确:Ubuntu官方镜像默认用户名为ubuntu,Amazon Linux镜像默认用户名为ec2-user,CentOS官方镜像默认用户名为centos,用户名不匹配会触发连接类报错;
    3. 确认目标路径在EC2实例上真实存在,不要传输到不存在的目录下。
  • 放通EC2实例内部防火墙
    登录EC2实例后,按照单机场景的防火墙放通步骤,确认实例内部的ufw/firewalld没有拦截22端口。

连通性验证标准

所有配置完成后,先验证SSH链路再执行后续集群操作:

  • 单机场景:执行ssh localhost,可直接免密登录、无连接报错即为正常;
  • EC2多节点场景:先在主节点执行ssh 从节点私网IP验证节点间免密连通,再从本地执行ssh -i 你的私钥.pem 用户名@EC2公网地址验证本地到EC2的连通性,链路通了之后再执行scp传输、集群启动操作,不要跳步。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:18:18