• SSH连接WSL2踩坑记录与增加端口转换规则,实现外网与WSL2的连接


    SSH连接WSL2踩坑记录

    1. 在WSL里的操作

    1.1 重装openssh-server

    sudo apt remove openssh-server      # 如果已经安装了,建设先卸载 sudo apt-get remove openssh-server 
    sudo apt install openssh-server # new install
    
    • 1
    • 2

    1.2 修改配置信息

    sudo vim /etc/ssh/sshd_config  # sshd_config is a readonly file
    
    • 1

    打开文件后,可以用搜索修改如下的信息

    Port 2222                   # 监听的端口,可以是其它的
    ListenAddress 0.0.0.0       # 0.0.0.0 表示所有的地址
    PasswordAuthentication yes  # 把原来的no改成yes,意思是可以用密码登录
    PermitRootLogin yes         # 把原来的prohibit-password改成yes
    
    • 1
    • 2
    • 3
    • 4

    把上面的都改完好,就重启ssh服务

    service ssh restart
    
    • 1

    至止,WSL里的的操作基本上已经完成了

    2. ssh连接

    2.1 先测试一下本机的终端是否能连接到WSL的ssh


    先打开power shell或者cmd

    ssh name@localhost -p 2222  # name为你的WSL的名字,2222是我们上面刚设置要监听的端口
    
    • 1

    在这里插入图片描述

    如上图,提示输入密码,输入你的WSL的密码,即可以进入了。但是现在远程的PC,还是无法通过ssh访问WSL的。

    2.2 配置端口转发和设置防火墙规则


    打开WSL

    ifconfig  # 查看网络配置
    
    • 1

    在这里插入图片描述

    如上图所示,这里WSL的网络配置情况。一般是172开头,这个就是WSL的IP地址,我们需要装windows的端口转发到WSL。打开Power Shell (用管理员)

    netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=IP connectport=2222  # IP为你的WSL的IP地址
    
    • 1

    完成上面后,还需要开户防火墙入站规则

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

    也可以在 控制面板 --> Windows Defender 防火墙 --> 高级设置 --> 入站规则中设置

    如上设置完后,应该可以远程通常本机的IP地址访问WSL了。

    注:这里的IP地址不是WSL的IP,是本机的IP,可以在Power Shell下用ipconfig查看

    ssh name@ip -p 2222 # name是WSL的用户名,ip是windows的ip,2222是我们设置的端口
    
    • 1

    出现要求输入password即成功了。

    3. 可能出现的错误

    ssh的时候,可以用-v debug一下,看看是什么问题

    如下问题:

    ssh_exchange_identification: read: Connection reset by peer
    
    • 1

    这个问题可能是在修改sshd_config里配置项Port(端口号)与我们映射的不一致。重新修改后,启动ssh服务后,再尝试连接即可。

    4. 再配置端口转发到WSL

    如果要增加其它端口转发到WSL,可能 过过如下命令继续添加。注意是在Power Shell

    netsh interface portproxy add v4tov4 listenaddress=* listenport=80 connectaddress=IP connectport=80  protocol=tcp  # IP为你的WSL的IP地址,增加监听80端口
    
    • 1
    # 删除转换端口
    netsh interface portproxy delete v4tov4 listenport=80 protocol=tcp
    # 查看转发规则
    netsh interface portproxy show v4tov4
    
    • 1
    • 2
    • 3
    • 4

    如下,可以修改WSL ip地址

    # 修改WSL ip地址
    netsh interface ip add address "vEthernet (WSL)" 172.24.39.1 255.255.0.0
    
    • 1
    • 2
  • 相关阅读:
    华为配置AP和AC之间NAT穿越示例
    后端研发工程师面经——数据库
    ORACLE 数据库表空间的管理以及IM列式存储
    【毕业设计】29-交流电机步_进电机的转速测量与控制系统设计(原理图、仿真、源代码、答辩论文、答辩PPT)
    R语言编写switch函数进行多分支选择、判断编程:使用switch函数在多种方案中进行选择
    Tomact目录结构的介绍
    HarmonyOS ArkTS HTTP 请求简单封装(二十二)
    面试经典150题——Day17
    std::weak_ptr(分析、仿写)
    Python入门系列(九)pip、try except、用户输入、字符串格式
  • 原文地址:https://blog.csdn.net/jasneik/article/details/127993390