在 macOS 通过 SSH 访问 Windows 的 WSL2 Ubuntu
配置 Windows 和 WSL2,使得能通过其他电脑远程 SSH 到 WSL2 Ubuntu。
一、Win10 安装 WSL2 Ubuntu
注意,是安装 WSL2,方法参考这个
步骤描述:
- 以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart; - 安装 “适用于 x64 计算机的 WSL2 Linux 内核更新包”;
- 将 WSL 设置默认 version 2,in PowerShell:
wsl --set-default-version 2; - 安装 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 -c 和 wsl.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的更多相关文章
- Java ssh 访问windows/Linux
Java ssh 访问windows/Linux 工作中遇到的问题: Java code运行在一台机器上,需要远程到linux的机器同时执行多种命令.原来采用的方法是直接调用ssh命令或者调用pli ...
- MacOS通过ssh连接基于Virtualbox的Ubuntu虚拟机
以前总是用Windows软件putty进行ssh连接,今天尝试使用macos. 实验环境:主机:macos 10.15.3 客户机:Ubuntu 18.04 默认情况下,Ubuntu没有安装SSH,需 ...
- 通过ssh访问虚拟机中的ubuntu系统
首先把 network 连接方式由 NAT 改为 Bridge Adapter,这样虚拟机中的 ubuntu 就可以有独立的 IP 地址. 安装 openssh: sudo apt-get insta ...
- windows下使用火狐浏览器插件AutoProxy+MyEnTunnel+SSH访问海外站点(转)
windows下使用火狐浏览器插件AutoProxy+MyEnTunnel+SSH访问海外站点 平时需要查阅一些技术资料,光走VPN太浪费流量,所以这儿教大家一种使用火狐浏览器的插件 AutoPr ...
- 分享CCNTFS小工具,在 macOS 中完全读写、修改、访问Windows NTFS硬盘的文件,无须额外的驱动(原生驱动)更稳定,简单设置即可高速传输外接NTFS硬盘文件
CCNTFS [ 下载 ] 在 macOS 中完全读写.修改.访问Windows NTFS硬盘的文件,无须额外的驱动(原生驱动)更稳定,安装后进行简单设置即可高速传输外接NTFS硬盘文件,可全程离线使 ...
- 【转】Cygwin访问Windows驱动器
From:http://www.cygwin.cn/site/info/show.php?IID=1000 由于自己的项目需要使用Linux内核,所以自己在windows下安装了一个Linux虚拟机! ...
- nat123外网SSH访问内网LINUX的N种方法
一,动态公网IP环境 1,环境描述: 路由器分配的是动态公网IP,且有路由管理权限,LINUX主机部署在路由内网.如何实现外网SSH访问内网LINUX主机? 2,解决方案: 使用nat123动态域名解 ...
- 外网SSH访问内网LINUX的N种方法
外网SSH访问内网LINUX的N种方法 http://www.nat123.com/Pages_8_260.jsp 一,动态公网IP环境 1,环境描述: 路由器分配的是动态公网IP,且有路由管理权限, ...
- virtualbox下面安装ubuntu后外网如何远程ssh访问
这两天在折腾virtualbox安装linux的事情,想多弄几个节点,装hadoop, 环境如下 两台thinkpad, 一台正常上班用的,win7 一台装的ubuntu kylin 16.04, 上 ...
- Mac OS X 访问 Windows 共享文件夹
Mac OS X 访问 Windows 共享文件夹 mac没有网络邻居,但可以使用finder访问局域网中windows共享的文件 1.点击 Finder 前往菜单中的「前往服务器」(或快捷键 com ...
随机推荐
- 高效开发与设计:提效Spring应用的运行效率和生产力
引言 现状和背景 Spring框架是广泛使用的Java开发框架之一,它提供了强大的功能和灵活性,但在大型应用中,由于Spring框架的复杂性和依赖关系,应用的启动时间和性能可能会受到影响.这可能导致开 ...
- 搭建 MongoDB (v6.0) 副本集记录
副本集概述 副本集(Replica Set)是一组带有故障转移的 MongoDB 实例组成的集群,由一个主(Primary)服务器和多个从(Secondary)服务器构成.通过Replication, ...
- 在 Sealos 中使用区块链技术实现统一支付系统
拿着区块链技术不一定是去发币,很多业务系统也适合用这些技术,比如做个统一支付系统,积分系统等,可以做为一家公司的金融基础设施,或支付中台.拿链的技术去做有很多好处: 高可用,自带多区域高一致性的能力, ...
- Mybatis-Flex核心功能之@Table
1.能干啥? @Table 主要是用于给 Entity 实体类添加标识,用于描述 实体类 和 数据库表 的关系,以及对实体类进行的一些 功能辅助. 例如: 数据库有一张tb_member的会员表 这时 ...
- 使用pip或者手动安装第三方库出现“由于目标计算机积极拒绝,无法连接”错误的解决办法
网上找了很多地方,都没找到怎么解决,之前用pip安装成功过,但是翻过墙后,pip安装第三方库的时候发现错误,如图:
- Reformer 模型 - 突破语言建模的极限
Reformer 如何在不到 8GB 的内存上训练 50 万个词元 Kitaev.Kaiser 等人于 20202 年引入的 Reformer 模型 是迄今为止长序列建模领域内存效率最高的 trans ...
- 关于 K8s 的一些基础概念整理
〇.前言 Kubernetes,将中间八个字母用数字 8 替换掉简称 k8s,是一个开源的容器集群管理系统,由谷歌开发并维护.它为跨主机的容器化应用提供资源调度.服务发现.高可用管理和弹性伸缩等功能. ...
- NC65获取Token以及相关信息
private static void setToken() { IPriviledgedGenerator tokenGenerator = (IPriviledgedGenerator) Busi ...
- Docker、pre-commit 导致的 git commit 报错:找不到 python 3.8
到这个问题的原因可能有很多,这里只是记录下针对我遇到这这跟题的原因及解决方法 问题描述 执行 git commit 命令,报错 /usr/bin/env: 'python3.8': No such f ...
- 使用鼠标在图片上拖拽矩形框vue
<template> <div> <img class="no-drag" src="https://dashanbook.oss-cn-s ...