• 【WSL】SSH 远程连接及宿主机端口转发配置


    引言

    Windows 系统因其简单好用的图形化界面而深受广大用户喜爱,但一般科学研究和程序开发,我们都需要使用 Linux 系统的。为此,微软也在 Windows 系统内提供了一个嵌套的子 Linux 系统,用户可以根据需要选择性的开启,这就是 WSL。WSL 在使用 Linux 系统的同时,又能享受部分 Windows 的图形化界面服务,可谓一举双得。

    简介

    本文介绍如何在 WSL 中开启 SSH 服务,并通过配置端口转发让和宿主机同处一个局域网的计算机能够远程连接。

    准备

    为方便文章的展开,我们这里做个简单的定义:

    1. 定义安装 Windows 系统的物理机为宿主机
    2. 定义在上述宿主机上开启的 WSL 为虚拟机

    教程

    虚拟机远程连接配置

    1. 进入 wsl,执行命令 vi /etc/ssh/sshd_config,修改或增加如下配置
    Port 22
    PasswordAuthentication yes
    
    • 1
    • 2
    1. 重启 ssh 服务,并设置其开机自启动
    service ssh restart
    service ssh status
    systemctl enable ssh
    systemctl is-enabled ssh
    
    • 1
    • 2
    • 3
    • 4

    完成上述配置后,宿主机就可以通过 SSH 连接虚拟机了。以下是连接教程:

    1. 进入 wsl,使用 ifconfig 命令查看虚拟机 IP【可以看到,这里是 172.27.242.144】
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.27.242.144  netmask 255.255.240.0  broadcast 172.27.255.255
            inet6 fe80::215:5dff:fe49:871  prefixlen 64  scopeid 0x20<link>
            ether 00:15:5d:49:08:71  txqueuelen 1000  (Ethernet)
            RX packets 77378  bytes 16287694 (16.2 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 4366  bytes 417007 (417.0 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 4  bytes 336 (336.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 4  bytes 336 (336.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    1. 退出 wsl,切换到宿主机,打开 cmd,并执行命令 ssh xuechao@172.27.242.144【其中 xuechao 是我的用户名,172.27.242.144 是上一步获取的 IP】
    >ssh xuechao@172.27.242.144
    xuechao@172.27.242.144's password:
    Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.10.16.3-microsoft-standard-WSL2 x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
      System information as of Thu Jun 23 21:27:54 CST 2022
    
      System load:  0.0                Processes:             8
      Usage of /:   1.1% of 250.98GB   Users logged in:       0
      Memory usage: 1%                 IPv4 address for eth0: 172.27.242.144
      Swap usage:   0%
    
    
    111 updates can be applied immediately.
    63 of these updates are standard security updates.
    To see these additional updates run: apt list --upgradable
    
    
    Last login: Thu Jun 23 14:38:13 2022 from 172.27.240.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    现在宿主机已经能够正常连接虚拟机了,接下来是让和宿主机同处一个局域网的其它计算机也能连接上虚拟机,那么就需要配置宿主机的端口转发了。

    宿主机端口转发配置

    Windows 给我们提供了一个端口转发快捷配置工具:netsh。

    1. 在宿主机上以管理员身份运行 cmd 并执行下方命令
    netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=172.27.242.144
    
    • 1
    • listenport:宿主机 Windows 监听端口(这里指定为 22)
    • listenaddress:宿主机 Windows 监听 IP 地址(0.0.0.0 表示同一局域网的所有 IP 地址)
    • connectport:WSL2 的 SSH 服务端口(一般默认 22)
    • connectaddress:WSL2 的 SSH 服务 IP 地址(打开 WSL 并通过 ifconfig 命令查看)

    上述命令执行完成后,可通过 netsh interface portproxy show v4tov4 查看配置详情。

    1. 还需要配置防火墙出入站规则
    netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=22
    
    • 1

    上述命令执行完成后,可通过 netsh advfirewall firewall show rulename=WSL2 查看配置详情。

    结语

    好的,你已经完成了所有配置,和宿主机在同一局域网的计算机也能通过 ssh 远程连接宿主机的 wsl 虚拟机了。

    参考

    https://zhuanlan.zhihu.com/p/372601715

  • 相关阅读:
    电动汽车充电机
    【python项目推荐】键盘监控--统计打字频率
    JVM性能调优
    git安装配置教程
    Qt 串口接收包含汉字的数据,汉字乱码
    第一个Mybatis程序
    curl命令连接mysql数据库
    【JavaWeb】JSP基本语法、指令、九大内置对象、四大作用域
    javascript--async和defer的区别
    数据结构初阶——排序
  • 原文地址:https://blog.csdn.net/qq_42951560/article/details/125426044