无法从 Visual Studio 连接到 WSL2

无法从 Visual Studio 连接到 WSL2

我有一台装有 Visual Studio 2022 的 Windows 11 电脑。我可以使用 Putty 通过 localhost 连接到 WSL2 内的 ssh 服务器。但是当我尝试在 Visual Studio 连接管理器中使用 localhost、端口 22、用户名和密码为 WSL2 添加连接时,日志中出现错误

C:\Users\***\Documents\Visual Studio 2019\RemoteConnectionsLogging

... 说 ...

10:03:13.5244226 [Info, Thread 1]   liblinux.RemoteSystemBase: Connecting over SSH to localhost:22
10:03:15.5765128 [Info, Thread 1]   liblinux.HostKeyVerifier: Connection failed.
10:03:15.5825127 [Info, Thread 1]   liblinux.HostKeyVerifier: System.Net.Sockets.SocketException (0x80004005): Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte

该错误是德语的,但它表示无法与 localhost 建立 TCP 连接。当我尝试使用 Win32 nmap 包中的 ncat 连接到 localhost:22 时,我可以从 WSL2 内部的 ssh 服务器看到 SSH 握手的第一步:

SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.4

答案1

为了能够通过 SSH 进入 WSL2 发行版:

  • 在 WSL 中安装openssh-server

    sudo apt install openssh-server
    
  • 由于 Windows 已经使用了我们的 SSH 的默认端口(通常为 22),因此请(例如)用 2222 替换:
    编辑/etc/ssh/sshd_config以下三处更改:

    Port 2222
    ListenAddress 0.0.0.0
    PasswordAuthentication yes
    
  • 要删除启动 ssh 服务的密码要求,请/etc/sudoers.d/通过添加以下行进行编辑:

    %sudo ALL=NOPASSWD: /usr/sbin/service ssh *
    
  • 最后启动服务:

    service ssh start
    

更多信息 通过 SSH 远程可靠地登录 WSL2 主机

答案2

你可能想尝试使用127.0.0.1代替本地主机

在现代系统中,本地主机解析为 IPv4(127.0.0.1)和 IPv6(::1),IPv6 将首先推出。通常情况下,这不是问题,因为如果 IPv6 无法工作,软件将很快回退到 IPv4。

回退在这里不起作用,因为它根本没有实现SSH.NET,Visual Studio 使用的底层库。它只取第一个地址(所以::1) 并随之而来。

据推测,WSL 中的本地主机转发也适用于 IPv6 和sshd通常也会在 IPv6 上监听,谁知道呢。

相关内容