ssh 安装及登录提示:connection refused(ssh: connect to host XX.XX.XX.XX port 22: Connection refused)的解决办法

本文指导您如何诊断并解决SSH连接主机时遇到的'connection refused'问题,包括检查SSH服务器端程序状态、验证用户权限、排除iptables规则干扰以及调整SSH配置等关键步骤。

ssh 安装及登录提示:connection refused的解决办法


溪西创客小屋

原文出处:http://hi.baidu.com/leejun_2005/blog/item/fbc27c4b20e83d3a08f7ef23.html?timeStamp=1309179713928

from:http://hi.baidu.com/tunaisen/blog/item/85e0a41805ed9fb24bedbcf3.html

如果出现ssh: connect to host XX.XX.XX.XX port 22: Connection refused

请按如下步骤检查:

1、目标主机的ssh server端程序是否安装、服务是否启动,是否在侦听22端口;

检查方法:

june@ubuntu:~$ ps-ef|grep sshd

root      2859     1  020:29?        00:00:00 /usr/sbin/sshd -D

root      2901  2859  020:31?        00:00:00 sshd:june[priv]   

june      2971  2901  020:31?        00:00:00 sshd:june@pts/1    

june@ubuntu:~$

其中/usr/sbin/sshd为ssh clinet/server中server端的守护进程,如果上述结果中没有sshd出现,那么可能就是你的server端程序没有安装(Ubuntu11.04 默认没有安装ssh server,只安装了sshclient),或者sshd服务没有启动,这两者的解决办法请见下文详述。
2、是否允许该用户登录;
3、本机是否设置了iptables规则,禁止了ssh的连入/连出;

检查方法:

june@ubuntu:~$sudo  iptables-L

[sudo] password for june: 

Chain INPUT (policy ACCEPT)

target    prot optsource               destination         

ACCEPT    tcp  --  anywhere             anywhere            tcpdpt:ssh 

 

Chain FORWARD (policy ACCEPT)

target    prot opt source              destination         

 

Chain OUTPUT (policy ACCEPT)

target    prot optsource              destination         

june@ubuntu:~$
4、查查ssh的配置文件

 ls -lrt /etc/ssh

针对第一点没有安装ssh server或者没开启sshd的用户,可以参考这篇:

Ubuntu如何开启SSH服务

SSH分客户端openssh-client和openssh-server
  如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server:sudo apt-get install openssh-server然后确认sshserver是否启动了:
ps -e |grep ssh
  如果看到sshd那说明ssh-server已经启动了。
  如果没有则可以这样启动:sudo /etc/init.d/ssh start
ssh-server配置文件位于/etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。
  然后重启SSH服务:
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
  然后使用以下方式登陆SSH:
ssh tuns@192.168.0.100    tuns为192.168.0.100机器上的用户名,需要输入密码。
  断开连接:exit

 

你遇到的错误信息: ``` ssh: connect to host 192.168.0.240 port 22: Connection refused ``` 表示你的 SSH 客户端尝试连接 IP 地址为 `192.168.0.240` 的设备时,**目标设备没有接受连接请求**。通常意味着以下几种可能: --- ### 🔍 常见原因及排查方法: #### 1. **目标设备 SSH 服务未运行** - 确保目标设备上的 `sshd`(SSH 服务)已经启动。 - 如果是嵌入式设备(如 OpenWrt),可以尝试通过串口登录后执行: ```bash /etc/init.d/sshd start ``` - 或者检查是否开机自动启动: ```bash /etc/init.d/sshd enable ``` #### 2. **目标设备未启动或网络异常** - 检查设备是否正常启动。 - 使用 `ping` 命令测试网络连通性: ```bash ping 192.168.0.240 ``` 如果无法 ping 通,说明网络不通,可能是: - 设备未开机或未连接网络 - 使用了错误的 IP 地址 - 网络隔离(如交换机/VLAN 配置错误) #### 3. **SSH 端口未监听** - 在目标设备上执行: ```bash netstat -tuln | grep 22 ``` 看是否有 `0.0.0.0:22` 或 `[::]:22` 的监听信息。 - 如果没有输出,说明 SSH 服务未监听 22 端口,可能未配置或配置错误。 #### 4. **防火墙或访问控制限制** - 检查目标设备的防火墙规则是否允许 22 端口: ```bash iptables -L -n | grep 22 ``` - 可能有 `drop` 或 `reject` 规则阻止了访问。 #### 5. **SSH 端口被修改** - 目标设备可能将 SSH 端口改为了非 22(例如 2222)。 - 查看 `/etc/ssh/sshd_config` 文件中的: ```bash Port 2222 ``` - 若如此,连接时应使用: ```bash ssh root@192.168.0.240 -p 2222 ``` #### 6. **设备资源耗尽或崩溃** - 如果设备内存或进程资源耗尽,可能导致 SSH 服务无法启动。 - 尝试通过串口查看系统日志,排查异常信息。 --- ### ✅ 解决步骤总结: | 步骤 | 操作 | |------|------| | 1 | `ping 192.168.0.240` 检查网络是否通 | | 2 | 通过串口登录设备,确认 SSH 服务是否运行 | | 3 | 检查 `/etc/ssh/sshd_config` 是否修改了端口 | | 4 | 检查防火墙是否放行 SSH 端口 | | 5 | 使用 `netstat` 或 `ss` 确认 SSH 是否监听端口 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值