局域网ssh连接wsl2配置与问题一站式解决(connection refused)

FileZilla连接WSL2的终极指南:解决SSH配置中的常见错误 本文详细介绍了如何使用FileZilla通过SSH协议连接WSL2,实现WindowsLinux文件系统的高效交互。从SSH服务配置、网络端口转发到FileZilla连接设置,提供全流程指导,并针对常见错误如连接拒绝、认证失败等给出解决方案,帮助开发者提升工作效率。 阅读详情

问题定位与解决

局域网机器ssh连接不上wsl2:

  1. 检查网络局域网机和宿主机的连通性
# 在局域网机powershell/cmd/terminal上运行
ping <windows IP>
# 发送成功则连通无问题,发送失败,检查两台机器之间的网络(路由器/IP设置等)

如何获取宿主机windows的ip:

# 在宿主机windows的powershell/cmd/terminal上运行
ipconfig
# 查看有外网连接的网卡的ip,一般是Ethernet
# 带wsl/virtual/default switch的一般是wsl的虚拟网卡
  1. 检查宿主机与wsl2的连通性
# 在宿主机windows上运行,注意此处<port2>指的是sshd_config中开放的端口
ssh <id>@<wsl2_ip> -p <port2>
# 连接成功则无问题,连接失败可尝试重启甚至重装wsl2的ssh服务
# 在windows上运行:
wsl --shutdown
wsl
# 在wsl2上运行:
sudo service ssh restart
  1. 检查wsl2与外网的连通性
# 在wsl2中运行:
ping baidu.com
# 若能正常显示连接时间,则正常;若连接超时或失败,参考[链接](https://blog.csdn.net/gaopan20080808/article/details/116141003)
  1. 检查防火墙的开放性 最容易出问题
    关闭所有防火墙,尝试连接,如果能连接上,则根据本文Step2.2部分重新设置防火墙的入站规则。
  2. 检查端口转发的规则设置 第二容易出问题
    本文涉及两个不同的端口设置,一个是外机连接本机的端口<port1>,一个是本机连接wsl2的端口<port2>,注意区分。
# 查看端口转发列表
netsh interface portproxy show all
# 查看windows正在监听的端口,应该能看到所设定的端口<port2>正在被LISTENING
netstat -ano -p tcp
  1. 无脑终结式清理windows的网络配置
# 在windows上运行:
wsl --shutdown
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
  1. netstat -ano指令查看发现计算机未监听当前端口
    打开应用程序“服务”,重启iphelper服务。

下面的内容是完整的配置方法。

一、在wsl2中设置ssh

Step 1.1 卸载重装

# 先卸载重装系统自带的sshd
sudo apt-get remove openssh-server
sudo apt-get install openssh-server

Step 1.2 配置重启

# 更改sshd的配置
sudo vi /etc/ssh/sshd_config

取消对应注释且更改对应设置如下:

# 端口默认是22,可以改为指定的端口,此处改成3456
Port 3456
ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

PasswordAuthentication yes
PermitRootLogin yes

注意:此处的端口是宿主机(即安装wsl2的机器)连接wsl2的端口,与外界机器连接宿主机的接口不同。(当然,你也可以设置成同一个,为显区分,本文将设置为不同的端口号)

# 重启ssh服务
sudo service ssh restart

二、在Windows中设置端口转发与防火墙

先尝试一下在宿主机windows里ssh连接wsl2

# 这里的3456就是上面设置的端口,可以设置为其他你习惯的端口号
ssh <id>@<ip> -p 3456

如果能连接成功,则表明wsl2中的sshd服务已经安装好且配置成功。

Step 2.1 设置端口转发

再测试一下在windows中通过localhost连接wsl2:

ssh <id>@localhost -p 3456

如果能够连接成功,可以尝试以下的配置方式:

# listenport=<port1> 是指其他机器连接到本机所用的端口,本文章中设置为1758
# connectport=<port2> 是指本机连接到本机wsl2所用的端口,本文章中设置为3456
# 格式如下:
# netsh interface portproxy set v4tov4 listenport=<port1> connectport=<port2> connectaddress=127.0.0.1
netsh interface portproxy set v4tov4 listenport=1758 connectport=3456 connectaddress=127.0.0.1

# 查看端口转发列表,检查刚刚有无设置成功
netsh interface portproxy show all
# 查看windows正在监听的端口,应该能看到所设定的端口1758正在被LISTENING
netstat -ano -p tcp

如果无法连接成功,可以使用以下的配置方式:

  1. 在方便的位置新建一个文本文件,输入以下内容:
# 启动wsl2,启动wsl2中的sshd
wsl.exe sudo /etc/init.d/ssh start
# 因为每次重启wsl2的ip都会改变,所以获取wsl2的本次ip,并且保存在变量$wsl_ip中
$wsl_ip = wsl hostname -I
# 在控制台输出WSL Machine IP以供用户查看
Write-Host "WSL Machine IP: ""$wsl_ip"""
# 设置端口转发,将外部机器发送到宿主机1758端口的信息转发到wsl2的3456端口<port2>上
# listenport=<port1> 是指其他机器连接到本机所用的端口,本文章中设置为1758
# connectport=<port2> 是指本机连接到本机wsl2所用的端口,本文章中设置为3456
# 格式如下:
# netsh interface portproxy set v4tov4 listenport=<port1> connectport=<port2> connectaddress=$wsl_ip
netsh interface portproxy set v4tov4 listenport=1758 connectport=3456 connectaddress=$wsl_ip
  1. 重命名该文本文件为<name_you_like>.ps1,且在每次重启后使用管理员身份运行一次该文件(注意在cmd里运行会直接打开文件,因此需要在powershell中运行)

Step 2.2 设置防火墙入站规则

# name可以自己起,localport是上一步中设置的listenport/<port1>
# 也即是其他机器连接到本机所用的端口,本文章中设置为1758
netsh advfirewall firewall add rule name="WSL2" dir=in action=allow protocol=TCP localport=1758

Step 2.3 重启并测试连接情况

wsl --shutdown
wsl
sudo service ssh restart
保姆级教程:用SSH远程连接你的WSL2,并配置端口转发实现外网访问(附常见错误排查) 本文提供了一份详细的WSL2远程访问配置指南,涵盖SSH服务部署、端口转发规则设置及外网连接方案。通过步骤详解和常见错误排查,帮助开发者实现跨设备无缝开发,特别适合需要远程访问WSL2环境的用户。 阅读详情

相关推荐

WSL2 SSH服务配置全攻略:从零搭建稳定远程连接

SSH(Secure Shell)是一种加密的网络传输协议,通过在客户端服务器之间建立安全通道,实现远程登录、命令执行和文件传输等功能。其核心原理基于非对称加密技术进行身份验证,确保通信过程的安全性完整性。在混合开发环境中,SSH的价值尤为突出,它能够无缝桥接不同操作系统,为开发者提供统一的远程管理界面。特别是在WindowsLinux共存的场景下,通过配置SSH服务,可以实现跨平台的开发环境整合高效运维。本文聚焦于WSL2环境,详细解析如何安装OpenSSH服务端、配置防火墙规则、解决动态IP问题

weixin_32520095的博客 264

WSL2 SSH 远程访问:从局域网到跨主机的完整配置指南

本文详细介绍了如何配置WSL2 SSH远程访问,从局域网到跨主机的完整设置指南。通过SSH实现远程访问WSL2,开发者可以保持开发环境一致性、提升跨设备协作效率,并最大化资源利用率。文章涵盖基础环境配置、Windows主机端口转发、局域网访问测试、跨网络远程访问方案以及安全加固建议,帮助用户轻松实现远程开发。

banshen0201的博客 357

WSL2配置SSH远程登录完整指南

SSH(Secure Shell)是一种加密的网络传输协议,广泛用于远程登录和安全文件传输。其核心原理是通过非对称加密实现身份验证,再建立加密通道进行数据传输。在开发环境中,SSH的价值体现在安全远程访问、自动化脚本执行和IDE远程开发支持等方面。WSL2作为Windows下的Linux子系统,其独特的网络架构导致默认无法直接SSH连接。通过安装OpenSSH服务器、配置端口转发和解决IP动态变化等问题,可以实现稳定的远程访问。特别是在使用VS Code Remote-SSH或需要局域网多设备协作的场景下,

weixin_30319153的博客 400

WSL SSH服务总启动失败?可能是这几个配置没改对(Ubuntu 22.04 LTS实测)

本文详细解析了WSL SSH服务在Ubuntu 22.04 LTS中的配置故障排查方法。从基础环境准备到关键配置文件修改,再到防火墙设置端口转发,提供了全面的解决方案。特别针对WSL2动态IP变化问题,给出了使用localhost连接配置静态IP和自动化脚本三种实用方案,帮助开发者高效解决SSH服务启动失败等常见问题

weixin_30475039的博客 680

Windows笔记本变Linux开发服务器:Docker+WSL2+SSH极简方案

Linux容器化开发环境是现代软件工程的基础能力,其核心在于轻量隔离、跨平台一致快速启停。依托WSL2内核级虚拟化,Windows可原生运行标准Linux容器,无需传统虚拟机开销;Docker Desktop作为桥梁,统一管理引擎权限上下文,使Mac等远程终端能透明调用Windows侧的Docker服务;再通过SSH协议连接定制化Ubuntu容器,构建出POSIX兼容、权限可控、网络可配的纯Linux开发空间。该方案天然适配VS Code Remote-SSH、Redis/Nginx本地测试、Pytho

weixin_30376509的博客 399

Go2EDU SSH连接ROS2开发环境搭建实战指南

SSH远程登录是嵌入式ROS2机器人开发的基础通信机制,其本质是基于TCP/IP协议栈的安全加密通道,支撑节点发现、话题通信远程调试等核心功能。在真实机器人平台如宇树Go2EDU中,SSH不仅是登录手段,更是打通主机-边缘计算单元(Jetson Orin NX)-机器人本体三级拓扑的关键链路。它直接影响ROS2 DDS发现成功率、/rosout日志可读性及VS Code远程开发稳定性。典型应用场景包括ROS2 Humble工作空间部署、L1激光雷达驱动验证、Cartographer建图启动及实时传感器数据

cuanku6549的博客 562

SSH远程连接四阶段原理安全配置实战指南

SSH远程连接并非简单的网络连通,而是一种基于密码学的可信会话建立机制。其核心原理涵盖TCP传输层连接、密钥交换(KEX)算法协商、服务端主机身份验证、客户端用户身份认证四大严格阶段。技术价值在于通过非对称加密、主机指纹校验和公钥认证构建防中间人攻击的安全隧道。典型应用场景包括Linux服务器运维、VS Code Remote-SSH远程开发、Git over SSH代码托管以及嵌入式设备调试。本文深入解析sshd_config关键参数配置、密钥交换失败排查、known_hosts冲突处理及ssh-agen

jardownload的博客 357

Linux】 阶段性复习(linux vim gcc makefile gdb)

Linux命令工具速查摘要 本文整理了Linux常用命令和开发工具的核心用法,分为以下四部分: 1. Linux常用命令分类 目录导航:pwd/ls/cd/mkdir/rmdir 文件操作:touch/rm/cp/mv 内容查看:cat/more/less/head/tail 搜索查找:find/grep/which/whereis 压缩传输:zip/unzip/rz/sz/tar 系统信息:date/cal/bc/uname 帮助热键:man/alias/Tab补全/Ctrl+c终止 2. Vim核心

专注后端与底层技术,分享实战干货与学习笔记,梦想进入字节跳动,步履不停,热爱不止。 758

Linux 中文本处理:cut 和 awk命令

Linux文本处理工具对比:cut vs awk cut和awk是Linux中常用的文本处理工具。cut专注于简单快速的列提取,适合结构化数据(如CSV/日志),通过-d指定分隔符,-f选择列,-c按字符位置提取。awk则是一个功能完整的文本处理语言,支持变量、条件判断、循环等复杂操作,能进行数据过滤、计算统计和格式化输出。 关键区别: cut适合简单列提取,awk适合复杂文本处理 awk支持编程特性(变量/循环/条件),cut不支持 awk的分隔符支持正则表达式,cut仅支持单字符 使用场景: 快速提取列

梦想不只是梦与想的博客 344

守护进程详解:理解 Linux 进程的后台化过程

本文详细介绍了Linux守护进程的创建原理实现步骤。守护进程是在后台运行、脱离终端控制的系统服务进程。创建守护进程的核心是两次fork()和setsid()调用:第一次fork使子进程成为非进程组组长以合法调用setsid();setsid()创建新会话并脱离终端;第二次fork防止进程重新获取终端。此外还需进行环境清理(切换工作目录、重置文件权限、重定向标准I/O)和信号处理(忽略SIGCHLD和SIGPIPE)。这些步骤共同确保进程能稳定运行于后台,不受终端关闭影响。

2501_91839423的博客 489

OpenAI Linux 版来了!

不过这次是 Preview 版本,有些功能还没实现,比如官方社媒提到了浏览器工作流,帮助中心对内置浏览器和 Voice 的说明仍然只写了 macOS 和 Windows。于是今天,你现在可以在 Mac、Windows 和 Linux 上都能使用 ChatGPT 了,OpenAI 这是想要一统桌面端吗?就在今天早上,OpenAI 官宣了这条消息,你在 Linux 上,也能使用 ChatGPT 了!虽然 ChatGPT 已在世界各地的桌面端普及了,但此前一直缺席一个重要的场景,Linux

程序员cxuan的个人主页 192

Arch Linux 无显示器服务器 SSH 远程麦克风监听取证录音实战

摘要:在ArchLinux服务器上远程使用SSH时,插入麦克风后声卡设备消失。排查发现核心原因是用户不在audio组,且SSH无图形会话导致PipeWire无权访问/dev/snd/*设备。解决方案包括: 权限修复:将用户加入audio组,并通过udev规则调整设备权限; 服务配置:重启WirePlumber和PipeWire服务,确保无图形环境下的音频设备枚举; 单声道处理:通过PipeWire的loopback模块创建虚拟单声道源; 无损录音监听:使用ffmpeg抓取原始PCM流,结合WebAudio

2601_96158891的博客 377

Linux 清理踩坑记录:一个包删掉了整个桌面

Linux软件删除的血泪教训:新手因不了解依赖关系链,多次误删关键组件(如KDE桌面、Firefox等)。核心问题Linux的硬依赖(Depends)会级联删除上层软件,Windows逻辑完全不同。安全操作守则:1)先用--dry-run模拟删除;2)用apt-cache depends检查依赖类型;3)确保待删列表中无关键软件。仅Recommends/Suggests层级的包可安全删除。重要经验:不确定的包不要动,依赖树比表面看起来复杂得多。

qq_36710118的博客 364

AirLLM 怎么部署?低显存运行大模型的 Linux 实践

大模型本地推理最常见的限制之一就是显存。普通消费级显卡通常只有 8GB、12GB 或 16GB 显存,而 70B、235B 甚至更大的模型,完整加载权重时往往需要远高于这个数字的显存容量。这样做的结果是,显存需求可以明显下降。AirLLM 近期还增加了 Kimi K3 支持。具体显存占用仍会受模型结构、框架版本和运行环境影响,因此这些数字更适合作为项目示例,而不是所有机器都能完全复现的固定值。

tedcloud123的博客 403

Linux】网络编程 —— 传输层协议 TCP(下)

但行好事,莫问前程

qq_42996461的博客 269

Linux】进程信号:从产生、阻塞递达到 sigaction、可重入内核返回路径

SIG_DFL /* 使用默认动作 */ SIG_IGN /* 忽略 */ handler /* 调用用户处理函数 */理解 Linux 信号,关键不是背1~31事件发生→ 信号产生→ 进入进程共享或线程私有 pending→ 当前线程 mask 决定能否递达→ disposition 决定默认 / 忽略 / 捕获→ 内核构造信号帧并返回用户态 handler→ trampoline + sigreturn 恢复原上下文标准信号不按次数排队,不要拿它做可靠计数器;阻塞不是忽略。

weixin_64304261的博客 751

Linux 终端命令速查表 --13 Git 速查表

摘要:本文简明介绍了Git版本控制系统的基本操作指南,包括初始设置(配置用户信息、初始化/克隆仓库)、日常工作流程(添加/提交变更、分支管理、查看历史)、撤销操作、暂存变更、标签管理、远程仓库交互以及历史重写等核心功能。重点覆盖了status/add/commit/push/pull等常用命令,分支创建合并,日志查看差异比较,撤销修改的多种方式,以及rebase/cherry-pick等高级操作。同时强调了在团队协作中避免重写已推送历史的重要性,并提供了获取帮助的方法。全文采用代码块形式呈现命令,便于开

山岚的运维笔记 244

4.进程概念【由浅入深-Linux

冯诺依曼体系结构(Von Neumann Architecture)是现代计算机科学的基石,几乎所有现代通用计算机的底层逻辑都脱胎于此。它的核心精髓在于打破了早期计算机“专机专用”的硬件布线限制,通过“存储程序”的方式实现了计算的通用性。在冯诺依曼体系提出之前,要改变计算机的任务,通常需要重新插拔线缆来更改硬件电路。冯诺依曼体系的革命性创新在于:这正是我们在进行底层开发(例如使用 C++ 操作指针)时,能够直接通过内存地址来访问变量甚至函数入口的底层硬件依据。所有的变量、对象、甚至编译后的机器码,在这个体系

插花弄玉的博客 307
上一篇: HarmonyOS无法添加outlook日历(报错该账户名称已被使用)
下一篇: Quicker执行python文件报错unexpected character after line continuation character (<string>, line 1)
你们EE出了个傻子
博客等级 码龄10年 27粉丝 · 19原创
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值