配置 Windows 和 WSL2,使得能通过其他电脑远程 SSH 到 WSL2 Ubuntu。

一、Win10 安装 WSL2 Ubuntu

注意,是安装 WSL2,方法参考这个

步骤描述:

  1. 以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令:

    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  2. 安装 “适用于 x64 计算机的 WSL2 Linux 内核更新包”;
  3. 将 WSL 设置默认 version 2,in PowerShell: wsl --set-default-version 2
  4. 安装 Ubuntu,in PowerShell: wsl --install -d Ubuntu-22.04

二、配置 SSH server(在 Ubuntu 执行)

进入 Ubuntu

#修改软件源
sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo apt update && sudo apt upgrade -y

如果是按照 《WSL2 配置 C++ 开发环境》安装 Ubuntu 的话这一步无需(因为安装过程已经更新了软件源)

安装配置 ssh 服务

sudo apt install openssh-server
sudo vim /etc/ssh/sshd_config
# 修改下面几个配置
# Port 2222
# AddressFamily any
# ListenAddress 0.0.0.0
# PermitRootLogin yes
# PasswordAuthentication yes # 如果启动遇到这个错误 请执行下面命令: sshd: no hostkeys available -- exiting
sudo ssh-keygen -A # 启动ssh服务
sudo /usr/sbin/service ssh start
# or 重启 SSH 服务
sudo service ssh --full-restart # 查看 wsl IP 地址
ip addr show # 172.17.187.242

三、Win10 防火墙设置

打开控制面板\系统和安全\Windows Defender 防火墙。

  • 最左边有高级设置
  • 右键点击入站规则
  • 新建入站规则
  • 点击端口,特定端口设置 2222
  • 然后命名之后一路下一步就行

或者通过 shell 设置,以管理员身份打开 PowerShell:

New-NetFirewallRule -Name sshd -DisplayName 'sshd for WSL' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 2222

参考于:wsl2设置端口转发方法

四、本地验证 SSH 访问 Ubuntu

打开 Windows Terminal,尝试 ssh 访问 Ubuntu

ssh -p 2222 wsluser@localhost

如果连接上说明 ssh 配置已经完成。

五、Ubuntu ssh 服务开机自动启动

WSL2 Ubuntu 的 ssh 服务不是跟着 Win10 开机自动启动的。在 Win10 的%USERPROFILE%目录下面新建文件sshd.bat

rem sshd.bat
@echo off
setlocal C:\Windows\System32\bash.exe -c "sudo /usr/sbin/service ssh start"
rem C:\Windows\System32\wsl.exe -e "sudo /usr/sbin/service ssh start" endlocal

注意上面 bash.exe -cwsl.exe -e 两个功能是一样的。bash 后面不维护了,wsl 是官方推荐命令,但是 bash 有输出。

接下来把上面的脚本配置成开机自动执行:

  • 按下 Win 键,搜索“任务计划程序”,右边点击“创建任务”。
  • 常规:设置任务名字“Start WSL SSH”,勾选上“使用最高权限运行”(这是给后面网卡映射命令的权限)
  • 触发器:新建,选择“启动时”
  • 操作:选择上面的 sshd.bat 脚本文件。

保存,重启电脑,打开 Terminal,重新试试ssh -p 2222 wsluser@localhost

六、网卡映射

到目前为止,在 Win10 本地已经可以在开机后直接通过 SSH 访问 Ubuntu 了,但是你如果在局域网内的其他电脑访问,还是连不上的。这是因为 WSL2 是个虚拟机。

WSL 2 is a well-hidden virtual machine, but it is still a virtual machine—and the consequences of this design are leaky. The network interface we see within WSL is a virtual interface that does not match the physical interface that Windows manages. Windows does a good job at hiding this fact when operating directly on the local machine (e.g. you can SSH into WSL from localhost and it will work), but attempts to reach WSL from a separate machine will fail.

设置开机自动执行网卡映射命令,将上面的 sshd.bat 文件改成如下:

rem sshd.bat
@echo off
setlocal C:\Windows\System32\bash.exe -c "sudo /usr/sbin/service ssh start"
rem C:\Windows\System32\wsl.exe -e "sudo /usr/sbin/service ssh start" C:\Windows\System32\netsh.exe interface portproxy delete v4tov4 listenport=2222 listenaddress=0.0.0.0 protocol=tcp for /f %%i in ('wsl hostname -I') do set IP=%%i
C:\Windows\System32\netsh.exe interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=%IP% endlocal

保存后启动,在 macbook 试试,成功。

在 macOS 通过 SSH 访问 Windows 的 WSL2 Ubuntu的更多相关文章

  1. Java ssh 访问windows/Linux

     Java ssh 访问windows/Linux 工作中遇到的问题: Java code运行在一台机器上,需要远程到linux的机器同时执行多种命令.原来采用的方法是直接调用ssh命令或者调用pli ...

  2. MacOS通过ssh连接基于Virtualbox的Ubuntu虚拟机

    以前总是用Windows软件putty进行ssh连接,今天尝试使用macos. 实验环境:主机:macos 10.15.3 客户机:Ubuntu 18.04 默认情况下,Ubuntu没有安装SSH,需 ...

  3. 通过ssh访问虚拟机中的ubuntu系统

    首先把 network 连接方式由 NAT 改为 Bridge Adapter,这样虚拟机中的 ubuntu 就可以有独立的 IP 地址. 安装 openssh: sudo apt-get insta ...

  4. windows下使用火狐浏览器插件AutoProxy+MyEnTunnel+SSH访问海外站点(转)

    windows下使用火狐浏览器插件AutoProxy+MyEnTunnel+SSH访问海外站点   平时需要查阅一些技术资料,光走VPN太浪费流量,所以这儿教大家一种使用火狐浏览器的插件 AutoPr ...

  5. 分享CCNTFS小工具,在 macOS 中完全读写、修改、访问Windows NTFS硬盘的文件,无须额外的驱动(原生驱动)更稳定,简单设置即可高速传输外接NTFS硬盘文件

    CCNTFS [ 下载 ] 在 macOS 中完全读写.修改.访问Windows NTFS硬盘的文件,无须额外的驱动(原生驱动)更稳定,安装后进行简单设置即可高速传输外接NTFS硬盘文件,可全程离线使 ...

  6. 【转】Cygwin访问Windows驱动器

    From:http://www.cygwin.cn/site/info/show.php?IID=1000 由于自己的项目需要使用Linux内核,所以自己在windows下安装了一个Linux虚拟机! ...

  7. nat123外网SSH访问内网LINUX的N种方法

    一,动态公网IP环境 1,环境描述: 路由器分配的是动态公网IP,且有路由管理权限,LINUX主机部署在路由内网.如何实现外网SSH访问内网LINUX主机? 2,解决方案: 使用nat123动态域名解 ...

  8. 外网SSH访问内网LINUX的N种方法

    外网SSH访问内网LINUX的N种方法 http://www.nat123.com/Pages_8_260.jsp 一,动态公网IP环境 1,环境描述: 路由器分配的是动态公网IP,且有路由管理权限, ...

  9. virtualbox下面安装ubuntu后外网如何远程ssh访问

    这两天在折腾virtualbox安装linux的事情,想多弄几个节点,装hadoop, 环境如下 两台thinkpad, 一台正常上班用的,win7 一台装的ubuntu kylin 16.04, 上 ...

  10. Mac OS X 访问 Windows 共享文件夹

    Mac OS X 访问 Windows 共享文件夹 mac没有网络邻居,但可以使用finder访问局域网中windows共享的文件 1.点击 Finder 前往菜单中的「前往服务器」(或快捷键 com ...

随机推荐

  1. TPshop商城的安装流程(windows)----超详细版

    提前准备 phpStudy下载:https://www.xp.cn/download.html 选择适合自己的版本下载 TPshop商城源文件下载链接:https://pan.baidu.com/s/ ...

  2. 小满OKKICRM与金蝶云星空对接集成客户资料

    小满OKKICRM与金蝶云星空对接集成客户列表查询(更新列表)&客户新增(小满客户对接金蝶客户-P) 数据源平台:小满OKKICRM 小满科技成立于2013年,是阿里巴巴集团战略投资的高新技术 ...

  3. 黑客玩具入门——2、Kali常用命令与简单工具

    一.Linux常用命令 首先,我们启动kali系统,然后点击这里的命令行工具. 就可以使用下面学习的命令了,另外,如果你有过计算机基础,那么Mac的terminal和Git的gitbash,都是可以练 ...

  4. BI工具:让数据分析井然有序一望而知

    BI(Business Intelligence)工具是一类专门用于数据分析和决策支持的软件工具. 它们能够将企业内部和外部的数据进行整合.处理和可视化,帮助用户从海量数据中获取有价值的见解和洞察,并 ...

  5. 掌握这些,轻松管理BusyBox:inittab文件的配置和作用解析

    BusyBox 是一个轻量级的开源工具箱,其中包含了许多标准的 Unix 工具,例如 sh.ls.cp.sed.awk.grep 等,同时它也支持大多数关键的系统功能,例如自启动.进程管理.启动脚本等 ...

  6. HTTPClients使用

    一. 创建httpclient对象用于发送get.post等请求 1. HttpClients.custom()的方式--自定义httpclient对象,多用于含有cookie的请求 1. Cooki ...

  7. C++学习笔记二:变量与数据类型(整型)

    1.int(整型数据): 1.1 进制的表示:十进制,八进制,16进制,二进制 int number1 = 15; // Decimal int number2 = 017; // Octal int ...

  8. 精致的Javascript代码

    1. 统计一个数组中,每个值的个数 var cards = [1, 2, 3, 4, 3, 2, 1, 4, 5] var dict = {}; for(var i = 0; i < cards ...

  9. 简便实用:在 ASP.NET Core 中实现 PDF 的加载与显示

    前言 在Web应用开发中,经常需要实现PDF文件的加载和显示功能.本文小编将为您介绍如何在ASP.NET Core中实现这一功能,以便用户可以在Web应用中查看和浏览PDF文件. 实现步骤 1)在服务 ...

  10. 寻找市场中的Alpha-WorldQuant功能的实现(下)

    导语:本文介绍Alpha的相关基本概念,以及寻找和检验Alpha的主要流程和方法.在上篇中我们梳理了 WorldQuant经典读本FindingAlphas的概要以及WebSim的使用.作为下篇,我们 ...