ssh: connect to host hadoop001 port 22: Connection refused
时间: 2025-04-23 13:42:48 浏览: 47
### 解决 SSH 连接被拒绝的问题
当遇到 `ssh: connect to host localhost port 22: Connection refused` 的错误时,这通常意味着 SSH 守护进程未运行或配置不正确。以下是可能的原因及解决方案:
#### 1. 启动 SSH 服务
确保 SSH 服务器已安装并正在运行。对于大多数 Linux 发行版来说,可以使用以下命令来启动和启用 SSH 服务。
```bash
sudo systemctl start sshd
sudo systemctl enable sshd
```
如果系统提示找不到 `sshd` 命令,则需要先通过包管理器安装 OpenSSH-server:
```bash
sudo apt-get install openssh-server # 对于基于 Debian 的发行版
# 或者
sudo yum install openssh-server # 对于基于 RedHat 的发行版
```
#### 2. 配置防火墙允许 SSH 流量
有时即使 SSH 服务已经开启,也可能因为防火墙阻止了外部连接而收到此错误消息。检查当前活动的防火墙规则,并添加一条新规则以开放 TCP 端口 22 上的数据传输。
对于 ufw 用户而言,可以通过下面这条指令完成操作:
```bash
sudo ufw allow 22/tcp
```
而对于 firewalld 用户则应执行如下命令:
```bash
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
sudo firewall-cmd --reload
```
#### 3. 修改主机名解析设置
Hadoop 使用 `/etc/hosts` 文件来进行本地网络名称解析。确认该文件中的条目是否正确无误,特别是针对 `localhost` 和实际机器 IP 地址对应的 FQDN (Fully Qualified Domain Name) 记录[^1]。
例如,在单节点集群环境中,应该有类似这样的记录存在于 `/etc/hosts` 中:
```
127.0.0.1 localhost
<Your_IP_Address> hadoop001
```
其中 `<Your_IP_Address>` 是指本机的实际 IPv4 地址而不是回环地址 `127.0.1.1`.
#### 4. 设置免密登录
为了使 Hadoop 能够自动启动各个组件而不需人工干预输入密码,建议配置好 SSH 免密登录功能。具体做法是在每台参与计算的计算机上生成一对公私钥对并将它们分发给其他成员节点保存在其各自的授权钥匙串里。
创建 RSA 密钥对的方法如下所示:
```bash
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
```
最后测试能否无需提供任何凭证就能顺利登陆到远程主机上去验证一切正常工作。
以上措施应当能够有效解决因 SSH 连接失败而导致的一系列问题。
阅读全文
相关推荐


















