You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将WSL目录中的文件传输至仅能通过Windows端Tailscale VPN访问的远程服务器

如何将WSL目录中的文件传输至仅能通过Windows端Tailscale VPN访问的远程服务器

我完全懂你的处境——WSL没加入Tailscale VPN,只有Windows本机能连上目标服务器,要传的tgz文件还偏偏在WSL的家目录里,直接从WSL用ssh/rsync又行不通。别慌,这有几个简单直接的方案,挑适合你的来:

方案一:先转存到Windows本地,再从Windows上传(最省心的一次性方案)

WSL和Windows的文件系统本来就是互通的,先把WSL里的文件复制到Windows的某个目录,再用Windows的SSH工具传去服务器就行:

  1. 在WSL终端里,把文件复制到Windows的挂载目录(比如你的Windows用户文档文件夹):
    cp /home/your-wsl-username/your-file.tgz /mnt/c/Users/your-windows-username/Documents/
    
  2. 打开Windows的PowerShell或者CMD,用scp命令把文件传到远程服务器(因为Windows已经在Tailscale里,能直接访问服务器的Tailscale IP或域名):
    scp C:\Users\your-windows-username\Documents\your-file.tgz remote-username@tailscale-server-ip:/path/on/server/
    
    要是习惯用图形化工具,也可以用WinSCP这类软件,直接从Windows文件夹拖到服务器就行。

方案二:通过Windows做跳板,直接从WSL传文件(适合频繁传输)

如果经常要传文件,来回复制太麻烦,可以让WSL借助Windows的网络连接,通过SSH跳板直接传输:

  1. 先确保Windows开启了OpenSSH服务器:打开Windows设置 → 应用 → 可选功能 → 添加功能,找到“OpenSSH服务器”安装,然后在服务里启动“OpenSSH SSH Server”(设置为自动启动更方便)。
  2. 在WSL终端里,用带跳板的scp命令直接传文件:
    scp -o ProxyJump=your-windows-username@localhost /home/your-wsl-username/your-file.tgz remote-username@tailscale-server-ip:/path/on/server/
    
    要是连接有问题,也可以把localhost换成Windows的本地IP(比如192.168.x.x)。
    怕每次输命令麻烦的话,还可以在WSL的~/.ssh/config里加一段配置,以后直接用别名连接:
    Host tailscale-server
        HostName tailscale-server-ip
        User remote-username
        ProxyJump your-windows-username@localhost
    
    之后直接用scp /home/your-wsl-username/your-file.tgz tailscale-server:/path/on/server/就行。

方案三:在WSL里用Tailscale用户空间模式(进阶方案,长期用更顺手)

如果想让WSL直接用Windows的Tailscale连接,不用每次依赖跳板,可以在WSL里安装Tailscale并启用用户空间模式:

  1. 在WSL终端里安装Tailscale(以Ubuntu为例):
    curl -fsSL https://tailscale.com/install.sh | sh
    
  2. 启动Tailscale并启用用户空间模式(不需要root权限):
    tailscale up --tun=userspace --socks5-server=localhost:1055
    
    这个命令会让WSL共享Windows的Tailscale连接,同时启动一个SOCKS5代理。
  3. 之后就可以用带代理的scprsync直接传文件了:
    scp -o ProxyCommand="nc -x localhost:1055 %h %p" /home/your-wsl-username/your-file.tgz remote-username@tailscale-server-ip:/path/on/server/
    

备注:内容来源于stack exchange,提问作者Christopher Clark

火山引擎 最新活动