wsl镜像模式开启ssh
ssh连接wsl
WSL2 和 Windows 宿主机共享相同的 IP 地址,那么在配置 SSH 连接时需要额外注意,以确保连接到 WSL2 而不是 Windows 宿主机。
您可以尝试以下步骤:
在 WSL2 中安装并启动 SSH 服务器: 这个步骤之前已经做过,但确保 SSH 服务器正在运行。
sudo pacman -Sy openssh
sudo systemctl start sshd
配置 WSL2 端口转发: 使用 Windows PowerShell 进行端口转发,这样可以确保从外部连接时,使用特定端口转发到 WSL2。 以管理员身份打开 PowerShell,然后运行:
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=22 connectaddress=127.0.0.1
这里 127.0.0.1 表示本地主机地址,因为在 WSL2 环境中,localhost 指向的是 WSL2 实例。
确保 Windows 防火墙允许端口转发的连接: 在 PowerShell 中运行以下命令,以确保 Windows 防火墙允许入站连接到端口 2222: New-NetFirewallRule -DisplayName “OpenSSH-WSL2” -Direction Inbound -Action Allow -Protocol TCP -LocalPort 2222 从本地 Linux 机器连接: 现在,尝试从本地 Linux 机器通过端口 2222 连接到 Windows 宿主机的 IP 地址:
ssh -p 2222 <username>@<windows_ip>
这样应该会连接到 WSL2 中运行的 SSH 服务器,而不是 Windows 宿主机。
如果这些步骤仍然无法解决问题,并且您依然遇到“Connection reset by peer”错误,请尝试以下检查:
确认 WSL2 中的 SSH 配置文件(通常位于 /etc/ssh/sshd_config)是否正确,并且没有限制连接:
确保 PermitRootLogin 设置为 yes 或 prohibit-password。
确保 PasswordAuthentication 设置为 yes。
sudo nano /etc/ssh/sshd_config
确认 WSL2 中没有其他防火墙设置阻止 SSH 连接。
ssh隧道代理
离线机:ssh -D 7890 rickliu@10.30.16.72 -p 2222
离线机:export ALL_PROXY=socks5://127.0.0.1:7890
离线机:cat /etc/apt/apt.conf.d/proxy.conf Acquire::http::Proxy “socks5h://localhost:7890/”; Acquire::https::Proxy “socks5h://localhost:7890/”;
wsl 加 ssh 做系统代理
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=localhost netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=22 netsh interface portproxy show v4tov4