当前位置: 首页 > ops >正文

Windows上SSH连接Ubuntu失败

当你在Windows上尝试SSH连接Ubuntu,命令为:ssh username@<Ubuntu的IP>

此时出现 "The connection was refused by the computer" 错误,通常意味着目标计算机(Ubuntu)拒绝了连接请求。以下是逐步排查和解决方案:


1. 快速检查清单

可能原因检查方法解决方案
SSH服务未运行sudo systemctl status ssh启动服务:sudo systemctl start ssh
防火墙拦截sudo ufw status放行SSH:sudo ufw allow 22
SSH监听配置错误ss -tulnp | grep ssh修改/etc/ssh/sshd_config
IP地址或端口错误ip a 查看Ubuntu IP确认连接命令:ssh user@正确IP
Windows防火墙阻止Test-NetConnection <IP> -Port 22放行Windows防火墙

2. 详细解决方案

(1) 确认Ubuntu的SSH服务已启动

在Ubuntu终端执行:

sudo systemctl status ssh

若未运行

sudo systemctl start ssh
sudo systemctl enable ssh  # 设置开机自启

若报错:可能需要安装SSH服务:

sudo apt update && sudo apt install openssh-server
(2) 检查SSH端口监听状态
ss -tulnp | grep ssh

正常输出应类似

tcp   LISTEN 0  128  0.0.0.0:22  0.0.0.0:*  users:(("sshd",pid=123,fd=3))

如果监听的是127.0.0.1:22,需修改配置:

sudo nano /etc/ssh/sshd_config

找到并修改:

ListenAddress 0.0.0.0  # 允许所有IP访问
Port 22               # 确保端口是22

重启服务:

sudo systemctl restart ssh

(3) 关闭Ubuntu防火墙(临时测试)
sudo ufw disable

如果关闭后能连接,则需永久放行SSH:

sudo ufw allow 22
sudo ufw enable
(4) 检查Windows防火墙
  • 方法1:临时关闭防火墙(不推荐长期使用):

    netsh advfirewall set allprofiles state off
  • 方法2:放行SSH端口:

    netsh advfirewall firewall add rule name="SSH" dir=in action=allow protocol=TCP localport=22
(5) 验证网络连通性
  • 在Windows上测试端口

    Test-NetConnection <Ubuntu的IP> -Port 22
    如果显示TcpTestSucceeded: False,说明网络或服务端问题。
  • 使用Telnet测试(需启用Telnet客户端):

    telnet <Ubuntu的IP> 22
    正常应返回SSH版本信息(如SSH-2.0-OpenSSH_8.9p1)。

3. 高级排查

(1) 检查SSH日志(Ubuntu端)
sudo tail -f /var/log/auth.log

在Windows尝试连接时,观察日志中的错误信息(如认证失败、IP拒绝等)。

(2) 更换SSH端口测试

修改Ubuntu的SSH端口(例如2222):

sudo nano /etc/ssh/sshd_config

修改:Port 2222

重启服务并放行新端口:

sudo systemctl restart ssh
sudo ufw allow 2222

在Windows连接时指定端口:

ssh -p 2222 username@<Ubuntu的IP>
(3) 检查主机名解析问题

在Windows的hosts文件中添加Ubuntu的IP和主机名:

notepad C:\Windows\System32\drivers\etc\hosts

添加行:192.168.1.100 ubuntu-hostname

然后尝试用主机名连接:

ssh username@ubuntu-hostname

4. 常见错误场景

错误现象原因解决方案
Connection timed out网络不通/防火墙拦截检查IP、端口、防火墙
Permission denied用户名/密码错误确认用户名和密码
No route to hostIP地址错误使用ip a确认Ubuntu的IP
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGEDSSH密钥变更删除~/.ssh/known_hosts中对应条目

总结步骤

  1. 确认Ubuntu的SSH服务运行并监听0.0.0.0:22

  2. 关闭防火墙临时测试(Ubuntu的ufw和Windows防火墙)。

  3. 使用telnetTest-NetConnection验证端口可达性

  4. 如果仍失败,检查SSH日志和网络配置。

如果问题依旧,可能是路由器隔离了设备(如AP隔离),需检查路由器设置。

http://www.xdnf.cn/news/13160.html

相关文章:

  • 记录下three.js学习过程中不理解问题③
  • pnpm安装和使用
  • Hyperlane 框架详解与使用指南
  • 如何使用java把文件转成十六进制字符串
  • DevSecOps实践:CI/CD流水线集成SAST工具详解
  • 8.1.排序的基本概念
  • 麒麟系统集成开发环境Kylin-IDE初体验,菜鸟小白入门教程
  • 基于vue+js的微信小程序高血压健康管理系统的设计与实现(源码+论文+调试+安装+售后)
  • 在微信小程序中使用骨架屏
  • 微信小程序之bind和catch
  • USB over Network技术重塑中国电气装备集团U盾智能化管控
  • Vue大文件上传:让你的文件秒传、断点续传、分片上传---需要后端支持--案例后端使用node
  • ArcGIS Pro 3.4 二次开发 - 流图层
  • 如何对目标检测算法RT-DETR进行创新和改进:突破瓶颈,提升性能!
  • docker compose v2版本创建和运行容器
  • HTML 列表、表格、表单 综合案例
  • ES6从入门到精通:前言
  • Linux之nginx部署网站
  • MongoDB 数据库应用
  • Win11无法安装Unity5.5.0f3怎么解决?虚拟机中如何配置?Win7怎么安装最新版VMware Tools?来这里教你完美解决!
  • windows上tensorrt国内镜像下载和安装教程
  • 金融科技的数字底座
  • Linux 信号机制深度解析:从基础概念到实战应用
  • 小程序的工具库-miniprogram-licia
  • 状态管理详解:Context API、Redux、Recoil 和 Zustand 在 React Native 中的应用
  • Stable Diffusion WebUI 本地部署指南(Windows 11 + RTX 4060 Ti)
  • 西电计组第六章-CPU
  • Flask RESTful 示例
  • 增加Label Verified
  • 《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》