0%
全力加载中...(╯▔皿▔)╯

Mac如何连接寝室里充当远程服务器的Windows端?经过自己将近两天的捣鼓,终于把这个问题解决了。感谢Chat GPT、感谢千问,在搭建连接的过程中给予了我莫大的支持。由于过程颇为繁琐,为了以后遇到类似问题自己能够有所参考,于是趁着期末周仅有的休息时间,写下这篇文章,若有差错的地方,恳请海涵指正。

一、写在前面

1.部署方式

大学的校园网通常是禁止路由器端口转发的,因此要想实现公网电脑远程连接内网服务端电脑就需要使用FRP技术进行内网穿透。基本原理为:

  • 云服务器作为中转;
  • Windows在内网运行SSH服务;
  • Mac通过SSH连接Windows;
  • FRP实现内网穿透。

2.相关环境

  • 阿里云服务器:1.CPU&内存-2核(vCPU) 2GiB; 2.操作系统: Ubuntu 20.04 64位; 3.公网带宽: 3Mbps
  • Windows系统:Win11
  • Mac系统:macOS 15.7.3
  • FRP版本:frp_0.54.0_linux_amd64(云服务器上)与frp_0.54.0_windows_amd64(Windows机上)

二、搭建步骤

1.云服务器端(FRPS服务端)

在Mac终端或者其他SSH服务端(如Xshell)输入如下代码:

1
2
3
4
5
6
7
8
9
10
11
# 登录云服务器端
ssh root@云服务器公网IP

# 安装基础工具
sudo apt update && sudo apt install -y wget tar

# 下载并解压FRP
wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz
tar -zxvf frp_0.54.0_linux_amd64.tar.gz
mv frp_0.54.0_linux_amd64 frp
cd frp

默认情况下,FRP保存在/root/目录下。

接着在终端输入指令sudo nano frps.toml创建frps.toml安全配置文件。文件内容如下:

1
2
3
4
# [server]
bindPort = 7000 # 固定端口,无需修改
auth.method = "token"
auth.token = "strong_password" # 设置连接密码

再在终端输入指令sudo nano /etc/systemd/system/frps.service配置开机自启文件,文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=frp server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/frp
ExecStart=/root/frp/frps -c /root/frp/frps.toml
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

最后启动FRP服务,终端指令如下:

1
2
3
4
5
6
7
# 启动服务
sudo systemctl daemon-reload
sudo systemctl start frps
sudo systemctl enable frps

# 检查状态
sudo systemctl status frps # 看到 active (running) 即成功

到此,云服务器上的相关配置文件就配好了。

不过云服务器还有最后一个操作,就是设置安全组允许6000端口、7000端口以及7500端口开放。具体路径为:控制台->云服务器ECS->安全组->管理规则。在入方向增加规则,其中授权策略选择“允许”,优先级选择“1”,协议选择“自定义TCP”,访问来源选择“任何位置”,访问目的设置为“6000”、“7000”以及“7500”。设置完成后可在终端输入命令sudo netstat -tulpn | grep 7000,若有“… Listen …/frps”内容输出,则证明设置成功。

2.Windows配置(FRPC客户端)

下载frp_0.54.0_windows_amd64.zip并解压到指定文件夹,以E:\frp为例。
接着进入E:\frp文件夹中创建frpc.toml,该文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
serverAddr = "云服务器公网IP"
serverPort = 7000 # 固定端口,无需修改

auth.method = "token"
auth.token = "strong_password" # 必须同云服务器端的frps.toml文件一致

[[proxies]]
name = "ssh_windows" # 随意取
type = "tcp"
localIP = "127.0.0.1" # 固定ip,无需修改
localPort = 22
remotePort = 6000 # 云服务器映射端口,无需修改

完成上述文件配置后,以管理员身份启动终端输入指令cd E:\frp.\frpc.exe -c frpc.toml,若出现“login to server success”和“start proxy success”则表示配置成功。

此外可能还需要配置OpenSSH服务的config文件信息,该文件路径为C:\ProgramData\ssh\sshd_config,其中“ProgramData”在Windows中是隐藏文件,需要手动开启。打开sshd_config文件后进行如下修改PasswordAuthentication yes以及PubkeyAuthentication yes,设置完成后再进行SSH连接时就可以支持Windows用户密码验证了。

3.Mac端

当云服务端和Windows端配置没有问题后,在Mac终端输入指令ssh Windows用户名@云服务器公网IP即可进行连接。如果想在vs code中进行远程连接,则需要在.ssh\config文件中配置如下信息:

1
2
3
4
Host 终端名称
HostName 云服务器公网IP
User Windows用户名
Port 6000

其中Host名随意。设置好以后即可在vscode中进行远程终端连接,前提是vs code下载了SSH Remote插件。

三、最后的话

在实际配置过程中,不同人会遇到不同的问题,若出现了本文章之外的状况,可以借助AI辅助一下,我相信只要不放弃,总有解决的那一天。