借助校园网限制实现跨平台文件互传与远程串流

5113 字
26 分钟
借助校园网限制实现跨平台文件互传与远程串流

本次用到的工具#

Windows#

macOS#

iPad#

Android#

作者的脚本#


前情提要与启发#

由于我有多设备开发和娱乐需求,经常需要在校园网环境下实现:

  • Mac 远程访问宿舍 Windows 电脑;
  • iPad / 手机串流 Windows 桌面;
  • Mac、iPad、Android 与 Windows 之间传输文件;
  • 在 Mac 上写代码,但文件实际保存在 Windows 上;
  • 在宿舍电脑不方便直接操作时,通过其他设备接管工作流。

一开始我以为这类需求直接用 Windows 文件共享,也就是 SMB,就可以解决。

理论上 macOS 的 Finder 可以直接连接:

smb://[服务器 ip 地址]/share_macos

iPad 的“文件”App 也可以连接 SMB 服务器。

但是实际测试后发现:在手机热点环境下,SMB、串流、文件传输都可以正常使用;一旦切换到校园网,串流仍然可用,但 SMB 文件共享会失败。


一、先确认校园网下设备能否互通#

Windows 校园网拨号后得到的地址是:

[服务器 ip 地址]

在 Mac 上测试:

Terminal window
ping [服务器 ip 地址]

结果能 ping 通,说明网络层不是完全隔离。

但是 ping 通不代表 SMB 一定能用,因为:

ping 使用 ICMP
SMB 使用 TCP 445
SSH/SFTP 使用 TCP 22

所以继续测试 SMB 端口:

Terminal window
nc -G 5 -vz [服务器 ip 地址] 445

结果出现:

Operation timed out

也就是说,Mac 能找到 Windows,但访问不了 Windows 的 445 端口。

随后在 Windows 上用 Wireshark 抓包,过滤器使用:

ip.addr == [服务器 ip 地址] && tcp.port == 445

并让 Mac 再次执行:

Terminal window
nc -G 5 -vz [服务器 ip 地址] 445

Windows 这边没有看到任何 445 数据包。

这说明问题不是 Windows 文件共享没有开启,也不是 Windows 防火墙普通规则没有放行,而是:

Mac 发出的 TCP 445 请求根本没有到达 Windows

因此可以判断:校园网链路大概率屏蔽了 SMB 的 445 端口。


二、为什么串流能用,但 SMB 不行?#

这也是这次折腾里最容易误判的地方。

我使用 Sunshine 作为 Windows 串流服务端,Mac、iPad、Android 端使用 Moonlight / VoidLink 作为客户端。

串流能正常发现或手动连接 Windows,说明:

校园网没有完全阻断设备互访

但是 SMB 失败说明:

校园网可能只屏蔽了部分高风险端口,比如 TCP 445

SMB 文件共享经常被蠕虫、横向移动、勒索软件利用,所以很多公共网络、校园网、运营商网络都会限制 445 端口。

因此最后结论是:

串流可以继续使用 Sunshine + Moonlight / VoidLink
文件共享不能继续依赖 SMB

三、文件互传最终方案:OpenSSH + SFTP#

既然 SMB 的 445 端口被挡,那就换一个协议。

我测试了 SSH 的 22 端口:

Terminal window
nc -G 5 -vz [服务器 ip 地址] 22

结果成功:

succeeded

所以最终选择:

Windows 开 OpenSSH Server
Mac / iPad / Android 通过 SFTP 访问 Windows 文件

这不是内网穿透,也不需要第三方服务器。它只是让 Windows 在校园网 IP 上提供 SSH/SFTP 服务。


方案实施#

本部分按照“服务器端”和“控制端”来组织。服务器端指真正存放文件、运行串流服务的 Windows;控制端指用于访问、开发、串流的 Mac、iPad 和 Android。


一、服务器端:Windows#

服务器端方案规划表#

目标使用工具 / 协议实现效果
远程文件访问OpenSSH Server / SFTP让 Mac、iPad、Android 通过 22 端口访问 F:\share_macos
文件权限隔离Windows 本地用户 + icacls创建专用 SFTP 用户,只授权到共享目录
远程串流Sunshine让 Mac、iPad、Android 通过 Moonlight / VoidLink 控制 Windows
网络状态维护自动拨号脚本校园网断线后自动重拨
问题定位Wireshark / nc / ping判断是网络层、端口层还是服务层的问题

1. 确认服务器端在校园网的地址#

在 Windows 管理员 Cmd 中执行:

Terminal window
ipconfig

输出差不多是:

Terminal window
Windows IP 配置
PPP 适配器 [这里是你拨号时对校园网起的名字]:
IPv4 地址 . . . . . . . . . . . . : [好像网线连接都是10.xxx.xxx.xxx的格式]
子网掩码 . . . . . . . . . . . . : [作者去除了信息喵]
默认网关. . . . . . . . . . . . . : [作者去除了信息喵]
DNS 服务器 . . . . . . . . . . . : [作者去除了信息喵]
未知适配器 Tailscale:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : [作者去除了信息喵]
自动配置 IPv4 地址 . . . . . . . : [作者去除了信息喵]
子网掩码 . . . . . . . . . . . . : [作者去除了信息喵]
默认网关. . . . . . . . . . . . . :
无线局域网适配器 WLAN:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
无线局域网适配器 WLAN 2:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :[作者去除了信息喵]
无线局域网适配器 WLAN 4:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :[作者去除了信息喵]
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . :[作者去除了信息喵]
本地链接 IPv6 地址. . . . . . . . : [作者去除了信息喵]
IPv4 地址 . . . . . . . . . . . . : [作者去除了信息喵]
子网掩码 . . . . . . . . . . . . : [作者去除了信息喵]
默认网关. . . . . . . . . . . . . : [作者去除了信息喵]
以太网适配器 蓝牙网络连接:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :

如果你是网线连接的校园网,那请你着重看 PPP 适配器 这一部分,并记住IPv4 地址 : 10.x.x.x,它将用于定位服务器,请务必记牢。


2. 开启 OpenSSH Server#

在 Windows 管理员 PowerShell 中执行:

Terminal window
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
New-NetFirewallRule -Name sshd -DisplayName "OpenSSH Server" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

之后在 Mac 上测试:

Terminal window
ssh [服务器中的用户名]@[服务器 ip 地址]

第一次连接时会出现:

The authenticity of host '[服务器 ip 地址]' can't be established.
Are you sure you want to continue connecting?

输入:

yes

然后输入 Windows 账户密码。成功后会进入类似:

Terminal window
C:\Users\[服务器中的用户名]>

这说明 Mac 已经可以通过 SSH 进入 Windows。


3. 创建专用 SFTP 用户#

为了避免把 Windows 主账户暴露给所有设备,我后来创建了一个专用账户。

在 Windows 管理员 PowerShell 中执行:

Terminal window
net user [用户名] "你的密码" /add

然后给它访问共享目录的权限:

Terminal window
icacls "F:\share_macos" /grant "[用户名]:(OI)(CI)F" /T

这里:

F:\share_macos

就是我作为跨平台共享中心的文件夹。

以后 Android、iPad、Mac 都可以使用:

协议:SFTP
地址:[服务器 ip 地址]
端口:22
用户名:[用户名]
密码:你的密码

4. 配置 Sunshine 串流服务端#

文件传输部分走 SFTP,而串流部分继续使用 Sunshine。

Windows 作为串流服务端运行 Sunshine,控制端的具体连接方式统一放到后文 “四、控制端串流:Mac / iPad / Android” 中说明。

连接时控制端一般使用 Windows 的校园网 IP:

[服务器 ip 地址]

串流之所以能用,是因为它不依赖 SMB 的 445 端口,而是使用 Sunshine 自己的串流服务端口。

最后,如果你发现电脑和串流设备处于同一校园网时,无论串流软件或者手动输入端口都无法检测到服务端,请务必检查你是否处于专用网络模式下,不能是公共网络,否则电脑无法被其他设备发现。


5. 自动拨号脚本#

由于校园网拨号偶尔会掉线/顶号,我还写了一个自动拨号脚本。

目录结构:

[文件夹]
├── auto_redial.ps1 // 拨号主脚本
├── toggle_switch.bat // 自动拨号开关,点击即可切换
├── switch.txt // 存放开关信息
└── redial.log // 存放日志信息

其中:

switch.txt = 1 表示开启自动重拨
switch.txt = 0 表示暂停自动重拨

auto_redial.ps1#
Terminal window
$connectionName = "校园网连接"
$username = "你的校园网账号"
$password = "你的校园网密码"
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$logFile = Join-Path $scriptDir "redial.log"
$switchFile = Join-Path $scriptDir "switch.txt"
if (!(Test-Path $switchFile)) {
"1" | Out-File $switchFile -Encoding ascii
}
function Write-Log {
param([string]$Message)
$time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"[$time] $Message" | Out-File $logFile -Append -Encoding utf8
}
Write-Log "auto redial script started"
while ($true) {
try {
$enabled = (Get-Content $switchFile -Raw).Trim()
if ($enabled -ne "1") {
Write-Log "auto redial paused by switch.txt"
Start-Sleep -Seconds 10
continue
}
$ok1 = Test-Connection -ComputerName 223.5.5.5 -Count 1 -Quiet -ErrorAction SilentlyContinue
$ok2 = Test-Connection -ComputerName 1.1.1.1 -Count 1 -Quiet -ErrorAction SilentlyContinue
if ($ok1 -or $ok2) {
Write-Log "network ok"
} else {
Write-Log "network down, redialing..."
rasdial $connectionName /disconnect | Out-File $logFile -Append -Encoding utf8
Start-Sleep -Seconds 2
rasdial $connectionName $username $password | Out-File $logFile -Append -Encoding utf8
Write-Log "redial command executed"
}
} catch {
Write-Log "error: $_"
}
Start-Sleep -Seconds 10
}

运行:

Terminal window
powershell -ExecutionPolicy Bypass -File "F:\temp_package\command\auto_redial.ps1"

toggle_switch.bat#

为了避免每次手动编辑 switch.txt,再写一个开关脚本:

Terminal window
@echo off
setlocal
set SCRIPT_DIR=%~dp0
set SWITCH_FILE=%SCRIPT_DIR%switch.txt
if not exist "%SWITCH_FILE%" (
echo 1>"%SWITCH_FILE%"
)
set /p STATE=<"%SWITCH_FILE%"
if "%STATE%"=="1" (
echo 0>"%SWITCH_FILE%"
echo auto redial paused
) else (
echo 1>"%SWITCH_FILE%"
echo auto redial enabled
)
pause

这里刻意使用英文输出,是为了减少 Windows 控制台编码导致的乱码问题。


二、控制端总览#

控制端分为三类:

控制端主要需求最终方案
Mac文件挂载、文件上传、文件下载、远程开发、串流SSHFS、winup、SSH 免密、Moonlight / VoidLink
iPad文件浏览、轻量编辑、串流Secure ShellFish、Moonlight / VoidLink
Android文件管理、移动端上传下载、串流MT 管理器 SFTP、Moonlight

三、控制端文件互传与远程开发#

1. Mac:SSHFS 挂载与 winup 上传#

Mac 方案规划表#
目标使用工具 / 命令实现效果
像 SMB 一样在 Finder 里看 Windows 文件夹macFUSE + SSHFSF:\share_macos 挂载为 ~/Mounts/win-share磁盘
一键重新挂载mount-win-share.command双击脚本自动清理坏挂载并重新挂载
免密码挂载SSH 密钥避免每次挂载都输入密码
上传普通文件 / 文件夹winup 函数自动清理 macOS 扩展属性,并用 cp / rsync 上传
远程开发VS Code Remote-SSH代码实际保存在 Windows,Mac 只作为编辑端

1. 用 SSHFS 挂载 Windows 文件夹#

Mac 上直接用 SFTP 客户端可以访问 Windows 文件,但我更希望达到类似 SMB 的效果(可以像打开磁盘一样使用文件夹)

Finder 左侧能看到一个 win-share
点进去就是 Windows 的 F:\share_macos

所以我使用了:

macFUSE + SSHFS

相关项目:macFUSE / SSHFS

最终挂载路径为:

~/Mounts/win-share

Windows 远程路径为:

[服务器 ip 地址]:/F:/share_macos

2. 自动挂载脚本 mount-win-share.command#

保存为:

Terminal window
~/Desktop/mount-win-share.command

内容如下:

#!/bin/zsh
MOUNT="$HOME/Mounts/win-share"
REMOTE="[服务器中的用户名]@[服务器 ip 地址]:/F:/share_macos"
mkdir -p "$MOUNT"
# 如果已经挂载,先强制卸载,避免坏挂载残留
diskutil unmount force "$MOUNT" >/dev/null 2>&1
umount -f "$MOUNT" >/dev/null 2>&1
# 挂载
sshfs "$REMOTE" "$MOUNT" \
-o volname=win-share \
-o reconnect \
-o ServerAliveInterval=15 \
-o ServerAliveCountMax=3 \
-o defer_permissions \
-o idmap=user \
-o umask=000 \
-o cache=yes \
-o cache_timeout=120 \
-o dcache_timeout=120 \
-o noappledouble \
-o noapplexattr \
-o follow_symlinks \
-o workaround=rename
open "$MOUNT"

保存后给执行权限:

Terminal window
chmod +x ~/Desktop/mount-win-share.command

之后双击这个脚本,就会自动把 Windows 文件夹挂载到 Finder。


3. SSH 密钥免密登录#

为了避免每次挂载都输入密码,可以给 Mac 配置 SSH 密钥。

在 Mac 上生成密钥:

Terminal window
ssh-keygen -t ed25519

查看公钥:

Terminal window
cat ~/.ssh/id_ed25519.pub

将公钥写入 Windows 的 authorized_keys

如果 Windows 用户是普通用户,一般写入:

C:\Users\[服务器中的用户名]\.ssh\authorized_keys

如果是管理员账户,有时还需要写入:

C:\ProgramData\ssh\administrators_authorized_keys

并修复权限:

Terminal window
icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r
icacls C:\ProgramData\ssh\administrators_authorized_keys /grant "Administrators:F" /grant "SYSTEM:F"
Restart-Service sshd

配置好后,在 Mac 上测试:

Terminal window
ssh [服务器中的用户名]@[服务器 ip 地址]

如果不再要求输入密码,就说明免密成功。


4. Mac 上传辅助函数 winup#

SSHFS 可以像本地文件夹一样使用,但实际体验中遇到了一个问题:

macOS 文件经常带有扩展属性、资源叉、.DS_Store._xxx 等元数据。

直接拖动文件到 SSHFS 挂载目录时,可能会报:

Operation not permitted
could not copy extended attributes

最后发现,清理扩展属性后就能正常上传。

所以我写了一个 winup 函数,并加入到mac的环境变量中,用来上传文件或文件夹到 Windows 共享目录。

编辑:

Terminal window
nano ~/.zshrc

加入:

Terminal window
winup() {
if [ $# -lt 1 ]; then
echo "用法:"
echo " winup 源文件或文件夹"
echo " winup 源文件或文件夹 目标文件夹"
echo ""
echo "示例:"
echo " winup ~/Desktop/test.txt"
echo " winup ~/Desktop/test.txt docs"
echo " winup ~/Code_Practice Code_Backup"
echo " winup ~/Code_Practice ~/Mounts/win-share/Code_Backup"
return 1
fi
SRC="$1"
DEFAULT_DEST="$HOME/Mounts/win-share"
DEST_INPUT="$2"
if [ ! -e "$SRC" ]; then
echo "源路径不存在: $SRC"
return 1
fi
if [ ! -d "$DEFAULT_DEST" ]; then
echo "默认挂载点不存在: $DEFAULT_DEST"
echo "请先挂载 win-share"
return 1
fi
# 如果没有指定目标文件夹,就上传到默认 win-share 根目录
if [ -z "$DEST_INPUT" ]; then
DEST="$DEFAULT_DEST"
else
# 支持直接输入完整挂载路径
if [[ "$DEST_INPUT" == /* ]]; then
DEST="$DEST_INPUT"
else
# 支持输入相对 Windows 共享目录的子文件夹名
DEST="$DEFAULT_DEST/$DEST_INPUT"
fi
fi
mkdir -p "$DEST"
echo "源路径: $SRC"
echo "目标路径: $DEST"
# 清理 macOS 扩展属性和 AppleDouble 文件
xattr -rc "$SRC" 2>/dev/null
dot_clean "$SRC" 2>/dev/null
if [ -d "$SRC" ]; then
BASENAME="$(basename "$SRC")"
TARGET="$DEST/$BASENAME"
mkdir -p "$TARGET"
COPYFILE_DISABLE=1 rsync -rtv --inplace --whole-file \
--no-perms \
--no-owner \
--no-group \
--omit-dir-times \
--exclude='.DS_Store' \
--exclude='._*' \
"$SRC/" "$TARGET/"
else
COPYFILE_DISABLE=1 cp -X "$SRC" "$DEST/"
fi
}

保存后执行:

Terminal window
source ~/.zshrc

使用示例:

上传单个文件:

Terminal window
winup ~/Desktop/test.txt

上传到 Windows 共享目录下的 docs 文件夹:

Terminal window
winup ~/Desktop/test.txt docs

上传整个文件夹:

Terminal window
winup ~/Code_Practice

上传整个文件夹到指定目录:

Terminal window
winup ~/Code_Practice Code_Backup

这个函数最终解决了:

  • macOS 扩展属性导致复制失败;
  • Finder 拖拽上传不稳定;
  • rsync 临时文件重命名失败;
  • SSHFS 上大量小文件传输失败。

其中最关键的是:

Terminal window
--inplace
--whole-file
--omit-dir-times
COPYFILE_DISABLE=1

2. iPad:Secure ShellFish 文件访问#

iPad 方案规划表#
目标使用工具 / 协议实现效果
在 iPad 上浏览 Windows 文件Secure ShellFish / SFTP通过 22 端口访问 Windows 文件系统
在“文件”App 中显示远程目录ShellFish 文件提供器像访问云盘一样访问 Windows 文件
快速进入共享目录默认路径或目录联接直接进入 F:\share_macos

1. 使用 Secure ShellFish 连接 Windows#

iPad 的“文件”App 原生可以连接 SMB,但是校园网挡了 445,所以不能继续走 SMB。

最后我使用:

Secure ShellFish

相关项目:Secure ShellFish

它可以通过 SFTP 连接 Windows,并且可以显示到 iPad 的“文件”App 里。

连接信息:

协议:SFTP
主机:[服务器 ip 地址]
端口:22
用户名:[用户名]
密码:你的密码

进入后找到:

F:
└── share_macos

如果想让默认进入这个目录,可以尝试设置初始路径:

F:/share_macos

或者:

/F:/share_macos

如果客户端不支持默认路径,也可以在 Windows 用户目录下创建一个目录联接:

Terminal window
mklink /J C:\Users\[用户名]\share_macos F:\share_macos

这样 iPad 连接进去后,默认用户目录里就会出现:

share_macos

点进去就是真正的:

F:\share_macos

3. Android:MT 管理器文件访问#

Android 方案规划表#
目标使用工具 / 协议实现效果
在 Android 上管理 Windows 文件MT 管理器 / SFTP浏览、下载、上传 Windows 文件
避免认证错误密码登录避免误选私钥导致 invalid privatekey
快速进入共享目录默认路径进入 F:/share_macos

1. MT 管理器远程连接服务器#

Android 上使用 MT 管理器 的“远程连接服务器”功能。

一开始我误把认证方式设置成了“密钥”,结果报错:

invalid privatekey

后来发现我根本不需要私钥,直接选择“密码登录”即可。

正确配置:

协议:SFTP
地址:[服务器 ip 地址]
端口:22
用户名:[用户名]
密码:你的密码
认证方式:密码

注意不要选择私钥文件,否则 MT 管理器会继续尝试用私钥登录,并报:

invalid privatekey

进入后同样找到:

F:
└── share_macos

如果 MT 管理器支持默认路径,可以填:

F:/share_macos

不要写成:

[服务器 ip 地址]/F:/share_macos

因为:

[服务器 ip 地址] 是服务器地址
F:/share_macos 是远程路径

两者不是同一个字段。


四、控制端串流:Mac / iPad / Android#

控制端串流方案规划表#

控制端使用工具连接方式实现效果
MacMoonlight / VoidLink自动发现或手动添加 [服务器 ip 地址]在 Mac 上远程控制 Windows 桌面
iPadMoonlight / VoidLink自动发现或手动添加 [服务器 ip 地址]在 iPad 上远程控制 Windows,适合轻量操作和娱乐
AndroidMoonlight自动发现或手动添加 [服务器 ip 地址]在手机上远程控制 Windows,适合临时操作

1. Mac & ipad 串流#

这里更加推荐 VoidLink ,虽然要付一点钱,但是它是基于 Moonlight 的优化版,延迟更低,还有ipencil的笔迹优化(嗯,还要价钱,请量力而行),然后 Moonlight 也可以,且是免费的。

VoidLink作者:Bilibili

2. Android 串流#

Android 端只有moonlight可以用,但是有许多大神的修改版,比原版更好用,这里不给出链接,请读者自己寻找安装包。

sunshine+moonlight教程


3. 串流异常排查#

如果控制端无法搜索到 Windows 主机,可以按下面顺序检查:

  1. Windows 当前网络是否为“专用网络”,而不是“公用网络”;
  2. Sunshine 是否正在运行;
  3. 控制端是否能 ping 通 [服务器 ip 地址]
  4. 是否能通过手动添加 IP 连接;
  5. Windows 防火墙是否允许 Sunshine 相关入站连接;
  6. 如果 Sunshine 服务无法正常启动,可以优先尝试安装到 C 盘下的固定目录。

踩过的坑#

1. Ping 通不代表 SMB 通#

最开始我能 ping 通:

Terminal window
ping [服务器 ip 地址]

但 SMB 仍然连接失败。

原因是:

ping 走 ICMP
SMB 走 TCP 445

两者完全不是一个东西。


2. Sunshine 能串流,不代表 SMB 能访问#

Sunshine 能连接,只能说明它自己的端口能走通。

SMB 的 445 端口被挡时,串流仍然可以正常运行。


3. macOS Finder 拖拽到 SSHFS 可能失败#

报错类似:

could not copy extended attributes
Operation not permitted

原因通常是 macOS 扩展属性、资源叉、.DS_Store._xxx 等元数据。

解决办法:

Terminal window
xattr -rc 文件或文件夹
dot_clean 文件或文件夹
COPYFILE_DISABLE=1 cp -X 文件 ~/Mounts/win-share/

或者直接使用我写的:

Terminal window
winup 文件或文件夹

4. rsync 默认临时文件重命名会失败#

最开始上传文件夹时报错:

move_file: Operation not permitted

原因是 rsync 会先创建临时文件,再 rename 成目标文件。

SSHFS + Windows SFTP 对这种 rename 覆盖操作兼容性不好。

解决办法是加:

Terminal window
--inplace
--whole-file
--omit-dir-times

5. MT 管理器不要误选私钥登录#

如果选择了私钥登录,但导入的私钥格式不支持,就会报:

invalid privatekey

如果只是普通密码登录,一定要选择:

认证方式:密码

不要选择:

认证方式:密钥

6. Windows PIN 不是 SSH 密码#

Windows Hello、PIN、指纹都不是 SSH 密码。

OpenSSH 要的是 Windows 账户真实密码,或者专门创建的本地账户密码。


7. 无法搜索到电脑?#

请务必打开专用网络,而非公用网络


8. Sunshine 无法正常启动?#

Sunshine 的服务环境有点依赖系统,所以请装入C盘。如果怕弄脏C盘,请单独创建文件夹用于存放类似服务。


9. 我要不要尝试内网穿透?#

可以,但是请根据你学校的情况弄。内网穿透具有一定风险,会将你的电脑暴露在校园网之外,容易被不法分子攻击。作者学校明令禁止了内网穿透的行为。


最终方案总结#

最后形成的方案是:

场景方案
Windows 远程串流Sunshine
Mac / iPad / Android 串流Moonlight / VoidLink
Windows 文件服务OpenSSH Server
Mac 访问 Windows 文件SSHFS
Mac 上传文件winup 函数
iPad 访问 Windows 文件Secure ShellFish
Android 访问 Windows 文件MT 管理器 SFTP
校园网掉线重拨PowerShell 自动拨号脚本

最终效果是:

Windows 作为主机和文件中心
Mac 负责远程开发
iPad 负责轻量访问与串流
Android 负责移动端文件管理

虽然 SMB 被校园网屏蔽了,但通过 SSH/SFTP,依然可以实现一个比较完整的跨平台工作流。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
借助校园网限制实现跨平台文件互传与远程串流
https://fenggjsnw.top/posts/tech/借助校园网实现文件互传远程串流/
作者
Feng_GJSNW
发布于
2026-05-24
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Feng_GJSNW
Olah!!! 我是Feng_GJSNW
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签

文章目录