Windows+WSL2+SSH实现远程办公

2023-11-16

Windows11+WSL2+SSH实现远程办公

在这里分享一下我如何实现用MacBook连接主机服务器远程办公,我目前有一台主机在寝室,但是在教室或者图书馆我手边是一台MacBook便不能跑一些算力较大的项目,这时我只需要远程打开我的主机服务器,然后用MacBook的终端或者vs code等连接到我的主机服务器遍可以进行一些大算力需求的项目开发了。
我这里用到的硬件以及软件说明:

  1. Windows主机+路由器+公网IP
  2. Windows11(提醒一点这里对Windows系统的版本是有要求的,至少要求是Windows 10 build 18917)
  3. 远程终端设备

主机配置

远程启动PC

这里我实现的远程启动主机的办法是:

  1. 通过智能插座来控制主机的电源通断电,注意这里的智能电源需要连接WiFi以方便可以在手机里控制通断电。
  2. 在主板的BIOS里设置通电自动启动,这里可根据不同主板然后去搜索通电自动开机的方法,由于不同品牌的方法不同这里不再赘述,如有问题可以私我。
  3. 在Windows的启动菜单里将终端软件设置为自动启动。

设置DMZ主机

我的宽带是带有公网IP的,我这里是通过网线-路由器-网线-主机连线,然后在Windows上打开powershell(或者cmd)并输入:

ipconfig

在下面找到你的Windows主机的子网地址如下图:
ipconfig
然后打开路由器,在里面找到DMZ主机的功能,将其ip改为你的主机ip。这里可以理解为在远程访问公网ip的指定端口可以直接访问到主机的ip指定端口。

下载WSL

提醒一点这里对Windows系统的版本是有要求的,至少要求是Windows 10 build 18917,可以win+R输入winver来查看你的Windows版本是否支持。win+R

winver
这里我推荐这篇WSL安装教程,如果有什么问题欢迎留言。
我这里安装的是WSL2+Ubuntu20.04

设置WSL为终端默认Shell和SSH自动启动

上面已经设置好了在Windows上的终端开机自动启动,现在在终端的设置里将Ubuntu20.04设置为默认Shell:Default Shell

然后打开Ubuntu之后,输入:

vim ~/.zshrc

或者如果你是bash的话输入:

vim ~/.bashrc

打开后会出现如下编辑器界面:.zshrc
按”Shift“和g跳转到最后一行,然后按o进入编辑模式,然后输入以下指令:

#启动时自动启动ssh服务
sudo service ssh start

然后按“Esc”键,输入":"+“w”+“q”,保存并退出,然后继续在zsh里输入:

source ~/.zshrc

到这里SSH的自动启动就结束了。

设置Windows和Ubuntu中SSH的端口转发

由于我只想开放Ubuntu的SSH的端口,从安全角度考虑不用默认的22端口,我就将Ubuntu的SSH设置为2222。
首先修改SSH的默认端口,在WSL中输入:

vim /etc/ssh/sshd_config

然后将其中的Port这一行的22端口修改为自己喜欢的端口,我这里使用的是2222:
sshd_config

接下来WSL中输入:

ifconfig

可以看到如下:
ifconfig
找到eth0里的inet,这个172.26.37.34就是我的WSL的本地地址,我们现在就是要将端口转发到主机PC上面去。
接下来在Windows里使用管理员身份打开powershell,并在里面输入以下代码,将其中的connectaddress改为自己WSL的本地地址即可:

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=172.26.37.34 connectport=2222

接下来要在防火墙里开放该端口,继续使用管理员身份打开powershell并输入:

netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=2222

请注意:若重新关闭防火墙再开启防火墙应重新开放端口并重启路由器(原因未知,如有知道的朋友欢迎私信我,感谢)
到这里,主机上的配置已经基本结束了,接下来就是如何使用移动终端设备连接主机服务器了。

笔记本电脑连接服务器

在笔记本上打开一个代码编辑器或者终端,这里是Visual Studio Code,在左边栏里找到远程(Remote Explorer),然后在SSH里选择“+”,然后在这里按照格式输入你的用户名、IP地址和端口号:

ssh <USER_NAME>@<IP> -p <PORT>

connect-ssh
输入完成后按“Enter”,输入你的密码,然后就可以享受远程开发的便捷了!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows+WSL2+SSH实现远程办公 的相关文章

  • 为什么tcl/tkinter只支持BMP字符?

    我正在尝试在基于 tkinter 和 tcl 构建的 gui 中查询和显示 utf 8 编码字符 但是 我发现 tkinter 无法显示 4 字节字符 即大于 U FFFF 的 unicode 代码点 为什么会这样呢 实现非 BMP 字符对
  • SQL Server Express(或任何版本)可以在 RPi 上运行吗?

    我注意到完整版的 Windows 10 可以在 RPI 3 上运行 我想知道 SQL Server Express 或任何其他版本 是否可用于 ARM 版本的 Windows 我在任何地方都看不到它 所以我怀疑答案是否定的 但想检查一下我是
  • 为什么我的文件路径中出现 Unicode 转义的语法错误? [复制]

    这个问题在这里已经有答案了 我想要访问的文件夹名为 python 位于我的桌面上 当我尝试访问它时出现以下错误 gt gt gt os chdir C Users expoperialed Desktop Python SyntaxErro
  • Python 可执行文件:py2exe 还是 PyInstaller?

    要创建可执行文件 Windows 我假设我们应该使用其中之一 Py2exe 或 PyInstaller 它们之间有什么区别 Py2exe 和 PyInstaller 都是包装器 但我注意到以下几点差异 Py2exe 与 python2 4
  • 批处理文件 FOR /f 标记

    任何人都可以逐行准确解释以下代码是如何工作的 我真的迷路了 我一直在尝试学习如何使用 FOR 命令 但我不明白这一点 echo off for f tokens delims f in myfile do set line f call p
  • Windows Workflow Foundation 4 (WF4) 延迟

    我正在与 Visual Studio 2010 的候选版本一起使用 Wf4 编写一个用于批准资源请求的新工作流程 在我的工作流程中 如果请求未获得批准 我希望请求在几天后过期 我们在 WF 3 5 Visual Studio 2008 中通
  • 在OpenCV中将YUV转换为BGR或RGB

    我有一个电视采集卡 其输入内容为 YUV 格式 我在这里看到了与此问题类似的其他帖子 并尝试尝试所述的所有可能的方法 但它们都没有提供清晰的图像 目前最好的结果是 OpenCVcvCvtColor scr dst CV YUV2BGR 函数
  • 代码退出-1073741515 (0xc0000135)“未找到依赖的 dll”

    我正在尝试编写一个简单的程序 与 2019 年相比 Windows 10 64 位 调试 gt x64 遵循 将 Visual C 项目配置为面向 64 位平台 1 include
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • python+win32:检测窗口拖动

    有没有办法检测何时使用 python pywin32 在窗口中拖动不属于我的应用程序的窗口 我想对其进行设置 以便当我拖动标题与桌面边缘附近的图案匹配的窗口时 当松开鼠标时它会捕捉到边缘 我可以编写代码 以便在释放鼠标时将所有具有该标题的窗
  • 更改 mingw' 启动目录或创建 mingw 符号链接

    设置 mingw 控制台启动目录的最简单方法是什么 我只使用 mingw 进行编译 但由于缺乏编辑器甚至符号链接 我很困惑如何告诉 mingw 控制台出现在不同的目录而不是常规的主目录中 如果有人知道如何像 cygwin 那样将 真正的 符
  • 用于验证 IIS 设置的 Powershell 脚本

    是否可以使用 Power Shell 脚本获取 IIS 设置 我希望使用脚本获取 检查以下信息 检查 Windows 身份验证提供程序是否正确列出 协商 NTLM 检查是否启用了 Windows 身份验证 Windows 身份验证高级设置
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 设置 Form.KeyPreview = true 的缺点?

    我想知道 Form KeyPreview 属性实际上有什么用处 它为什么存在以及将其设置为 true 会带来什么 风险 我想它一定有some负面影响 否则它根本不应该存在 或者至少默认情况下是正确的 EDIT 我很清楚what确实如此 我问
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • Vim 在 Mingw 上表现异常

    我在 MinGW 4 6 2 上的 Vim 表现得很奇怪 例如 在插入模式下按 Backspace 会删除字符 但我必须用箭头键移动光标才能删除的字符消失 而且它也会使我退出插入模式 另一个例子 按 Del 删除字符有时会生成奇怪的字符 例
  • 需要 TensorFlow 依赖项。如何在 Windows 上运行 TensorFlow

    我有兴趣让 TensorFlow 在 Windows 上运行 但目前我意识到这是不可能的 因为某些依赖项无法在 Windows 上使用 例如巴泽尔 之所以出现这种需求 是因为据我目前了解 从 TensorFlow 访问 GPU 的唯一方法是
  • 在centos上设置jenkins:ssh密钥和git的问题

    经历了很多问题 但似乎没有什么能解决我的问题 或者更准确地说 我不确定我是否正确地完成了整个事情 所以这里是 已安装centos 6 3操作系统 然后我按照以下指南安装詹金斯 https wiki jenkins ci org displa

随机推荐

  • R语言-ggplot2柱状堆叠图

    导入数据 load D R futures user 2 dat 提取需要画图的数据 a futures user 2 c 1 2 5 对部分错误的数据进行修改 a province which a province 广西桂林 lt 广西
  • Node 16版本和 node-sass 兼容性问题

    我电脑上的node版本是16 13 1 运行刚克隆下来的项目时 npm install 报错 gyp err 百度之后确定是node sass版本兼容性问题 项目的package json文件版本如下 devDependencies nod
  • str.charAt(i);的作用

    在java中 有 String str leetcode 则 str charAt 0 为 l str charAt 1 为 e str charAt 2 为 e
  • 拉格朗日插值

    直接上公式 简单的讲 这个玩意就是在给你若干个 f xi yi 的结果 算出f k 的结果 最朴素的实现方法 验证下这个公式的结果 include
  • 【利用Python module计算程序运算时间】

    本文简介如何利用Python module来计算程序运算时间 内容概览 为什么要计算程序的运行时间 方法一 time module 方法二 timeit module 为什么要计算程序的运行时间 编写程序时 为了比较各种算法或优化算法 需要
  • Typescript 装饰器和反射

    装饰器 装饰器 也叫注解 对一个类 方法 属性 参数的装饰 它是对这一系列代码的增强 并且通过自身描述了被装饰的代码可能存在行为改变 装饰器是一种特殊类型的声明 它能够被附加到类声明 方法 访问符 属性或参数上 装饰器使用 expressi
  • 一篇博文教你SpringMVC中JSON注解&异常处理的使用

    目录 一 JSON数据返回 1 2 Jackson的介绍 1 3 3 案例演示 二 异常处理 2 4 1 异常处理方式 2 4 2 异常处理方式 2 4 3 异常处理方式 一 JSON数据返回 1 1 1 2 Jackson的介绍 1 2
  • steam创客教育

    社会竞争日益激烈 为了让子女将来能 成龙成凤 父母们都非常重视孩子的教育 格物斯坦小坦克看到这样普遍的现象 为了让自己的孩子不输在起跑线上 在各种各样兴趣班盛行的当下 很多家长常常盲目跟风 看到别的孩子学着还不错或升学考试需要 也给自己孩子
  • oracle中sqlload,oracle----sqlldr用法(转)

    SQL LOADER是ORACLE的数据加载工具 通常用来将操作系统文件迁移到ORACLE数据库中 SQL LOADER是大型数据 仓库选择使用的加载方法 因为它提供了最快速的途径 DIRECT PARALLEL 现在 我们抛开其理论不谈
  • elasticsearch 2.3.4 java API 连接,ik分词器,设置集群节点,创建index,mapping的几种方式...

    1 默认集群连接 Client client TransportClient builder build addTransportAddress new InetSocketTransportAddress InetAddress getB
  • mybatis的熟练运用以及反射知识讲解

    JSP常用设计模式MVC模式 Mybatis mybatis的使用 我们在写项目的时候必定要写DAO 写DAO的时候不难发现对每张表的DAO都差不多 只是sql语句不同 DAO中的每个方法其实也差不多 所以直接用JDBC写DAO是在太麻烦
  • Linux系统(二)——Linux环境下的开发工具

    接着上一篇博客 把Linux环境下常用的vim编辑器 gcc工具链 makefile和gdb等工具的使用理一理 一 vim编辑器 1 工作模式 vim是Linux常用文本编辑器 vim有两种基本工作模式 命令模式 输入的字符作为命令使用 不
  • 华为OD机试 - 表达式括号匹配(Java)

    题目描述 1 2 3 3 8 0 1 2 这是一个简单的数学表达式 今天不是计算它的值 而是比较它的括号匹配是否正确 前面这个式子可以简化为 这样的括号我们认为它是匹配正确的 而 这样的我们就说他是错误的 注意括号里面的表达式可能是错的 也
  • c++ 使用类模板时类声明和类方法定义分开导致`undefined reference to` 错误的一种解决方法

    文章目录 1 问题描述 2 问题分析 3 解决方案 1 问题描述 在编写c 代码时使用到了类模板 并且将类的声明与类方法的定义分别放到了两个文件中 fun h与fun cpp 结果编译时报错 error undefined referenc
  • Flutter实现发送Http请求获取后端接口数据以及如何工程化封装返回数据

    当我们在开发Flutter的时候 肯定会和后端接口对接去请求后端的数据 那么本次我们将 讲解Flutter如何请求数据 以及如何封装返回结果 话不多说直接上代码 首先根据Flutter官方网站的描述 需要在pubspec yaml引入一个h
  • 马上:Android pins 模块化架构

    马上 Android pins 模块化架构 主工程的代码堆积 造成包目录结构臃肿 难区分 借用pins工程结构暂时 其相互独立的代码进行区分 为后期模块组件化 留下了灵活性 pins 原理是gradle sourceSets sourceS
  • Visual Studio连接Linux服务器编译CMake项目,生成在Linux上运行的程序

    本文基于的开发环境说明 window系统 Windows 10 企业版 64位操作系统 Linux系统 BigCloud Enterprise Linux 7 8 Core Visual Studio Microsoft Visual St
  • eclipse中设置jsp文件的默认编码格式为utf-8

    eclipse中设置jsp文件的默认编码格式为utf 8 我们在创建jsp文件时 经常遇到生成的jsp文件中的编码格式默认为iso 8859 1 这样的编码由于不支持中文 所以我们需要手动把它改为utf 8编码 这样会浪费我们很多时间 所以
  • 神经网络学习小记录74——Pytorch 设置随机种子Seed来保证训练结果唯一

    神经网络学习小记录74 Pytorch 设置随机种子Seed来保证训练结果唯一 学习前言 为什么每次训练结果不同 什么是随机种子 训练中设置随机种子 学习前言 好多同学每次训练结果不同 最大的指标可能会差到3 4 这样 这是因为随机种子没有
  • Windows+WSL2+SSH实现远程办公

    Windows11 WSL SSH实现远程办公 Windows11 WSL2 SSH实现远程办公 主机配置 远程启动PC 设置DMZ主机 下载WSL 设置WSL为终端默认Shell和SSH自动启动 设置Windows和Ubuntu中SSH的