在WSL上配置SSH服务

14 min read

  1. 卸载现有的SSH服务(如果有)

    apt remove openssh-server
    
  2. 重新安装SSH服务

    apt install openssh-server
    
  3. 编辑SSH配置文件
    打开 /etc/ssh/sshd_config 文件,并进行以下修改:

    • 设置SSH服务的监听端口,例如:Port 2222
    • 允许使用用户名和密码登录,设置:PasswordAuthentication yes
    • 如果需要,允许远程root用户登录,设置:PermitRootLogin yes

    保存并退出编辑器。

  4. 重启SSH服务

    service ssh restart
    
  5. 设置开机自启动
    /etc/init.wsl 文件中添加:

    service ssh start
    

在Windows上配置端口转发和防火墙

  1. 查看WSL的IP地址
    首先,安装 net-tools

    apt install net-tools
    

    然后,运行 ifconfig 查看WSL的IP地址。

  2. 设置端口转发
    打开PowerShell并运行以下命令:

    netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=[WSL_IP] connectport=2222
    

    [WSL_IP] 替换为你从 ifconfig 获取的WSL IP地址。

  3. 配置Windows防火墙
    在PowerShell中运行:

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

测试连接

  1. 本地连接测试
    在PowerShell中运行:

    ssh root@localhost -p 2222
    

    这应该允许你通过SSH连接到本地WSL实例。

  2. 远程连接测试
    使用另一台机器(例如,你的Mac电脑)尝试SSH连接到你的Windows机器的IP地址和指定端口:

    ssh username@Windows_IP -p 2222
    

按照这些步骤,你应该能在WSL上设置SSH服务,并能从其他机器进行远程连接。如果你遇到任何问题,可能需要检查网络和防火墙设置。