WSL2 SSH远程前向连接回

WSL2 SSH远程前向连接回,ssh,Ssh,在签出dev服务器上的分支后,我试图在dev服务器上使用rsync将文件下载到本地计算机 在使用wsl2之前,我曾经能够做到以下几点: 远程服务器 rsync -ave "ssh -p 22001" --delete --exclude-from ~/rsync_exclude_list.txt ~/as/ alex@localhost:/home/alexmk92/code/project 本地SSH配置 Host dev-tunnel HostName dev.

在签出dev服务器上的分支后,我试图在dev服务器上使用
rsync
将文件下载到本地计算机

在使用wsl2之前,我曾经能够做到以下几点:

远程服务器

rsync -ave "ssh -p 22001" --delete --exclude-from ~/rsync_exclude_list.txt ~/as/ alex@localhost:/home/alexmk92/code/project
本地SSH配置

Host dev-tunnel
    HostName dev.sever.co.uk
    User as
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h:%p
    RemoteForward 22001 localhost:22

Host dev
    HostName dev.server.co.uk
    User as
    RequestTTY yes
    RemoteCommand cd as; bash
然后,如果从远程服务器输入
ssh-p 22001,我可以使用
ssh-dev
ssh-fvN-dev tunnel
运行这些alex@localhost
然后我得到:

debug1: remote forward success for: listen 22001, connect localhost:22
debug1: All remote forwarding requests processed
debug1: client_input_channel_open: ctype forwarded-tcpip rchan 2 win 2097152 max 32768
debug1: client_request_forwarded_tcpip: listen localhost port 22001, originator 127.0.0.1 port 34472
debug1: connect_next: host localhost ([127.0.0.1]:22) in progress, fd=5
debug1: channel 1: new [127.0.0.1]
debug1: confirm forwarded-tcpip
debug1: channel 1: connection failed: Connection refused
connect_to localhost port 22: failed.
debug1: channel 1: free: 127.0.0.1, nchannels 2
我猜这是因为WSL2不再在本地主机上运行,而是在虚拟机监控程序中隔离。这可能意味着windows正在
localhost:22
(没有运行SSH服务器)上接收此请求,然后挂断连接


如何将请求转发到WSL2 SSH进程?

可以使用以下WSH脚本将端口映射添加到WSL2机器:

$port = 3000;
$addr = '0.0.0.0';
$remoteaddr = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteaddr -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';

if( $found ) {
  $remoteaddr = $matches[0];
} else {
  echo "Error: ip address of WSL 2 cannot be found";
  exit;
}
Invoke-Expression "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr"
Invoke-Expression "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteaddr"

echo "Success: Port mapping added!";
当然,您需要更改端口,可能还需要更改IP地址(前两行)
可能需要以管理员身份运行脚本…

这不是编程问题,因此最好在superuser.com上询问。检查ssh服务配置中是否启用了远程转发或一般转发。在某些系统中,它可以被禁用如果你将端口更改为2000以上,windows应该自动让WSL2拥有它。嘿,我完全忘了更新我的问题,我已经从我的主机->WSL2添加了一个端口转发,但仍然遇到同样的问题:(谢谢你的建议