ssh 进入 WSL2 仅在某些 IP 地址上有效

ssh 进入 WSL2 仅在某些 IP 地址上有效

在 Win10 上,在运行 Ubuntu 20 的 WSL 2 中,我安装了在不同于 22 的端口(即 2222)上运行的 sshd。我在防火墙中为 TCP 端口 2222 添加了一条传入规则。
从 Windows 命令提示符中,可以正常工作。对于 WSL 的 报告的点分四元组,ssh -p 2222 127.0.0.1也是如此。ssh -p 2222 xxx.xxx.xxx.xxxifconfig

从 Windows 命令提示符 (不是WSL)ipconfig报告其192.168.1.yyy在我的路由器上的地址。通过该地址,Windows 可以访问该路由器上的其他 192.168.1 主机(Windows、Mac、Linux;ping、http、安装磁盘、ssh)并被访问仅来自请参阅 WSL。

在 Windows 命令提示符下,ssh -p 2222 192.168.1.yyy失败Connection refused我怎样才能让它工作?

  • PuTTY 0.74 的行为与 Windows 命令提示符的 ssh 相同。

  • ssh -v -v -v添加可能有用的诊断:

    debug1: Connecting to 192.168.1.100 [192.168.1.yyy] port 2222.
    debug3: finish_connect - ERROR: async io completed with error: 10061, io:000002E243EDC460
    debug1: connect to address 192.168.1.yyy port 2222: Connection refused
  • 如果我在 sshd_config 中将 ListenAddress 限制为192.168.1.yyy:2222,则其他传入的 ssh 将按预期失败。因此需要配置的可能不是 ssh 而是 WSL 本身。 ifconfig -a没有提到任何 192.168。

  • 上下文:这是从路由器的其他主机启用 ssh 进入 WSL 的垫脚石。目前,WSL 的 /etc/ssh/sshd_config 使用 PasswordAuthentication;稍后我将把它更改为 PubKeyAuthentication。

答案1

WSL2 的简短答案 - 使用 Windows OpenSSH 作为进入 WSL 实例的跳转主机。您可以通过 ssh 连接到 Windows 然后运行命令wsl(例如ssh user@windowsip wsl)来执行此操作,或者,如果您需要更复杂的操作(“真正的” ssh 访问),则在 Windows 主机和 WSL 实例上使用 SSH(例如ssh -o "ProxyCommand ssh -W %h:%p windowshost.local" -o "StrictHostKeyChecking=no -p 2224 localhost)。

有关详细信息,请参阅这个答案

相关内容