校园网封禁SSH端口?Cursor/VS Code 直连云端算力容器的终极踩坑指南
校园网封禁SSH端口?Cursor/VS Code 直连云端算力容器的终极踩坑指南
校园网封禁SSH端口?Cursor/VS Code 直连云端算力容器的终极踩坑指南
最近为了赶进度跑深度学习模型,租了一台带 RTX 3090 的云端算力服务器。本以为拿到 IP 和密码就能在 Cursor (或 VS Code) 里愉快地写代码了,结果却被校园网的防火墙和云平台的网络架构结结实实地“摆了一道”。
经过一番折腾,终于完美破局!在这里把整个踩坑过程和最终的保姆级解决方案记录下来,希望能帮到有同样需求的同学。
💥 踩坑实录:我到底经历了什么?
坑一:校园网无情封杀 22 / 2222 端口
通常云服务器默认的 SSH 端口是 22,而很多算力平台为了统一管理,会提供一个特定的网关端口(比如 2222)。由于我在学校局域网办公,校园网的防火墙极其严格,直接把这些非标准 Web 端口给墙了。导致本地直接 SSH 连接时无限提示 Connection timed out。
坑二:把“平台网关端口”误认作“机器内部端口”
既然默认端口被封,算力平台通常会提供**“开放端口”功能(类似于 NAT 映射)。 我最初的错误操作是:直接在云平台的控制台里,把服务端口 2222 映射到了外网端口(比如 27405)。 结果: Connection refused。 原因剖析: 云平台分配的 2222 端口是平台的统一大门**,不是我这台机器内部真正的端口!容器内部的默认 SSH 依然是 22 端口。我把内部根本没有程序监听的 2222 映射出去,外网流量进来了自然无人接待。
坑三:精简版 Docker 容器没有 systemctl
好,既然内部 22 端口被占用或者平台不让映射 22,那我就去容器内部改 SSH 配置,给它加个新端口(比如 2224)。
结果当我准备重启 SSH 服务时:
systemctl restart ssh 报错 command not found。
service sshd restart 也无效。
原因剖析: 算力平台分配的通常是纯粹的 Docker 容器环境。为了极致精简,官方镜像直接阉割了后台服务管理工具。
🛠️ 终极破局指南(保姆级步骤)
核心思路:绕过校园网限制 -> 进容器手动开辟一个新 SSH 端口->映射到外网 -> 本地直连。
第一步:通过网页 WebSSH 进入终端
既然本地连不上,先在算力平台的控制台里,找到并点击 WebSSH 登录服务器的网页版终端。这是我们“从内部打破封锁”的唯一入口。
第二步:安装 SSH 并修改关键配置
算力平台的容器可能连完整的 SSH 服务都没装,或者禁止了 root 密码登录。在 WebSSH 终端中依次执行以下命令:
Bash
# 1. 更新源并安装 openssh-server(如果是选择性覆盖配置,选 keep local version)
apt update && apt install openssh-server -y
# 2. 强制允许 root 用户通过密码登录(非常关键!)
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
# 3. 创建 sshd 运行所必需的系统目录
mkdir -p /var/run/sshd
第三步:重置 root 密码
因为我们要跳过平台的网关直接连容器,必须自己设一个密码:
Bash
passwd
输入两次你要设置的新密码(注意:Linux 输入密码时屏幕没有任何显示,盲敲后回车即可)。
第四步:硬核启动 SSH 服务(监听新端口)
既然没有 systemctl,我们就绕过管理工具,直接让 SSH 服务在一个新的内部端口(比如 2224)跑起来:
Bash
/usr/sbin/sshd -p 2224
敲完回车如果没有红字报错,安安静静跳到了下一行,说明内部端口已经开启成功!
第五步:在云平台配置“开放端口”
-
回到云平台的控制台,找到“开放端口管理”。
-
新增一个映射规则:服务端口(内部端口)填写
2224。 -
保存后,平台会为你生成一个全新的外网地址和端口(例如:
36.103.203.203:21614)。把这个外网端口复制下来。
第六步:配置本地 Cursor / VS Code
回到你的本地电脑,打开 SSH 的 config 文件(在 Cursor 中按 Ctrl+Shift+P 搜索 Open SSH Configuration File),添加如下配置:
Plaintext
Host 云-3090
HostName 36.103.203.203 # 填写平台生成的外网 IP
Port 21614 # 填写平台最新分配给 2224 的那个外网端口
User root # 注意:必须是纯粹的 root,不要带后面的平台实例 ID 尾巴
保存配置文件后,在编辑器中点击连接,输入刚才在第三步盲敲设置的新密码。
看到左下角变绿的那一刻,世界终于清静了!
💡 总结
在处理容器化的算力平台网络连接时,一定要分清**“平台网关”和“容器内部真实端口”**的区别。当常规管理工具失效时,找到程序的底层启动命令(如 /usr/sbin/sshd)直接硬启动,往往能大力出奇迹。
祝大家的模型都能顺利收敛!
更多推荐



所有评论(0)