跳到主要内容

配置windows端口转发完成远程ssh访问WSL

配置好WSL的SSH后配置Windows端口转发

配置Windows防火墙

为了允许SSH连接,需要在Windows防火墙中添加一个入站规则,允许通过22端口的连接:

  1. 打开“Windows安全中心”:Win + I 键,进入“更新和安全”,然后选择“Windows安全中心”。

  2. 点击“防火墙和网络保护”: 在“防火墙和网络保护”界面中选择“高级设置”。

  3. 添加入站规则:

    • 在左侧选择“入站规则”,然后在右侧选择“新规则”。
    • 选择“端口”,点击“下一步”。
    • 选择“TCP”,并在特定本地端口中输入“22”,然后点击“下一步”。
    • 选择“允许连接”,点击“下一步”。
    • 选择适用的网络类型(通常选择全部),点击“下一步”。
    • 给规则命名,例如“SSH”,然后点击“完成”。

配置端口转发

由于WSL2中的IP地址是动态的且可能会改变,建议通过Windows的IP地址进行连接,并将流量转发到WSL2中的SSH服务。可以使用 netsh 命令进行端口转发:

  1. 打开命令提示符(以管理员身份运行):Win + R 键,输入 cmd,然后按 Ctrl + Shift + Enter 以管理员身份运行。

  2. 运行以下命令进行端口转发:

    netsh interface portproxy add v4tov4 listenport=22 listenaddress=<Windows_IP> connectport=22 connectaddress=<WSL2_IP>

    <Windows_IP> 替换为Windows主机的IP地址(这里建议填写0.0.0.0,这样即使ip切换端口转发规则也是有效的),将 <WSL2_IP> 替换为WSL2的IP地址(例如 172.26.209.126)。

从其他电脑进行SSH连接

在其他电脑上使用SSH客户端连接到Windows的IP地址:

  1. 打开终端或SSH客户端,运行以下命令:
    ssh <your_username>@<Windows_IP>
    例如:
    ssh user@172.20.10.4
    输入WSL2中配置的用户密码后即可登录。

常见问题排查

  1. 无法连接到SSH服务器:

    • 确认WSL2和Windows的防火墙规则正确配置。
    • 确认端口转发配置正确,并且WSL2实例的IP地址没有变化。
    • 检查SSH服务器状态:
      sudo service ssh status
  2. SSH服务未启动:

    • 确认SSH服务已配置为开机启动。
    • 手动启动SSH服务:
      sudo service ssh start
  3. 权限问题:

    • 确认SSH配置文件的权限正确:
      sudo chmod 600 /etc/ssh/sshd_config
    • 确认~/.ssh目录和文件的权限正确。

通过上述步骤,你应该能够成功将WSL2配置为服务器并允许SSH访问。如果在过程中遇到任何问题,请检查配置文件和网络设置,确保每一步都正确无误。