BOSh
文章321
标签521
分类135
315晚会 36氪 80后 ADB AI AI Agent AI PC AI 代理 AI 助手 AI 网关 AI 评测 AI代理 AI助手 AI处理器 AI大模型 AI安全 AI应用 AI智能体 AI网关 AMD API API 集成 AWS Agent Agentic AI AionUi Alwaysdata Android Apple Arch Linux Argo Tunnel Automation Backup Bash Bosh Bot Bot-hosting C++ CDN CEO CI/CD CLI CLI Proxy API CLIProxyAPI COMPUTEX CRM Chrome 插件 Claude Claude Opus 4.6 Cloudflare Code ConnectBot Credential Manager Ct8.pl CurrentEvents DNS Debian DeepSeek DenchClaw DevOps Devil Docker Elon Musk FreeLLMAPI GCP GEO GPL GPS GPU Gemini Gemini 3.1 Pro Ghostty Git GitHub GitHub Actions Gmail Go Gog Golang Google Google AI Pro Google API Google Gemini Google Photos Google Pixel HKUDS Hardware Hermes Hermes Agent Hexo HidenCloud Hugo Hyprland IPV6 Intel JavaScript Jetpack Compose John Turnus KDE KOSPI Karpathy Kimi-K2.5 Kotlin LINUX LLM LTS LaTeX Linux LiveUSB MW4L Markdow Markdown Matrix MemU Bot Mesh-Network MiniMax Musk NAT64 NIX NODE NVIDIA NVIDIA Build NanoClaw Netcatty Netlify Newsletter Node.js Nvidia Open WebUI OpenAI OpenAI 兼容接口 OpenAI兼容 OpenCLI OpenClaw P2P PDF 编译 Pacman PicoClaw Pixel Pixel 1 Pixel 12 Pixel11 Plasma Prismer Productivity Pura90 Python QClaw QQ机器人 Qualcomm Quickshell RAG RTX Spark Railway Reddit Rust SFTP SSH SeleniumBase Serv00 Serverless Skills SoC Subagent SuperCall Synapse Syncthing TPU TSMC Tailscale Telegram Telegram Bot Tensor Tensor G7 Tim Cook Tunnel Turnstile Ubuntu VLESS VPN VPS Vercel Wayland WeChat Web3 WebSSH WebSocket WebTransport Web开发 Windows WireGuard WorkBuddy X XChat XHTTP X热榜 YouTube ZeroClaw arXiv arch c++ cc-switch cloudflared ct8.pl email git hugo hyprmod i3wm iMessage iOS n8n nanobot node js ntfs pacman podman zz.ac 东海 两性关系 个人助理 中东 中东冲突 中东局势 中关村论坛 中南大学 中国 中美 乌克兰 习惯养成 云同步 云服务器 亚洲 人性 人教版 代理 代金券 以色列 任务管理 伊朗 伊朗危机 伊朗战争 伦理 体育 使用 俄乌战争 俄罗斯 保护主义 信息流 信息管理 停火 健康管理 光通信 免费VPS 免费主机 免费试用 全球动态 六年级 共和党 关系 养老金 内容工厂 内容生产 内容筛选 内网穿透 军事冲突 军事动态 军民融合 农村 分享 分配 创业 制裁 办公自动化 加密 加密货币 加沙 北斗 北韩 医学生 半导体 华为 协议分析 博客 博客助手 博客发布 博客部署成功 卫星 即时通讯 厄尔尼诺 原生 JS 去中心化 反向代理 反思 反爬虫 反重力 台海局势 台湾 命令 命令行 喷嚏网 国产 国产化 国产替代 国际 国际关系 国际局势 国际新闻 图卦 图说 地缘政治 域名邮箱 基础设施 多代理 多模态AI 大学分析 大模型 孙少平 学习 安全 安装 实时监控 家庭助理 家庭服务器 家装设计 小学 工业策略 工作总结 工作效率 工作流编排 工具 工具链 平凡的世界 平台责任 庞氏骗局 开发 开发实录 开源 开源软件 开源项目 张雪峰 微信 心理健康 快捷键 情感 慈善 战争 房地产 手机 技术分享 投资工具 指标看板 提示词工程 播客 收件箱清理 效率 效率工具 教程 教育制度 数学 数据分析 数据投毒 文件管理 文献管理 新能源汽车 新闻汇总 日历聚合 时事 时事总结 显卡 晨报 智能体 智能体生态 智能手机 服务器部署 朝鲜 极端天气 架构 架构实践 核协议 核武器 桌面Cowork 桌面环境 模型接入 模型配置 欧洲安全 每日图说 比亚迪 气候 油价 法律 活动运营 浏览器自动化 消息通道 消费者权益 深度学习 渔船 游戏开发 湘雅医院 潘石屹 热点新闻 熔断 版本更新 特朗普 生态系统 生活 生活自动化 生物识别 用例 甲骨文云 电池技术 症状追踪 白嫖 白嫖攻略 白山云 皮皮虾 监管 目标管理 知识库 社交媒体 社会保障 社会公平 社会百态 社会观察 科技 科普 科研助手 窗口管理 笔记 第一财经 算法 算法推荐 系统管理 纽森 组网 经济 经济观察 经验分享 编程 网关 网络 网络安全 网络摘录 网络穿透 美伊冲突 美伊谈判 美国 美国制裁 美国大选 美国政治 股灾 能源安全 脚本 腾讯 腾讯,龙虾,OpenClaw 腾讯云 自动化 自动化创作 自动化协作 自动化提醒 自动化流水线 自动化脚本 自动化运维 自建服务 自律教练 自托管 自由软件 芯片 草榴 行为改变 视频摘要 解锁 计算摄影 记录 许可证 论文写作 论文阅读 语义搜索 语音代理 读书 读书笔记 读后感 谷歌云 财报季 路遥 身份验证 轻量级 迁移 运维 进化论 远程访问 远程运维 选车 邀请确认 部署 部署指南 部署教程 量子计算 销售自动化 阅读感悟 随笔 隐私 霍尔木兹 霍尔木兹海峡 青蛙机 韩国股市 韩红 韬定律 项目管理 风险管理 飞书 高中生活 高可用 高考 高考志愿 鸽巢原理 麒麟 麒麟9050 黄仁勋 黎巴嫩 龙虾

一言

文章归档

无公网出口的 VPS SSH 连接方案指南

无公网出口的 VPS SSH 连接方案指南

无公网出口的 VPS SSH 连接方案指南

在云计算与私有云部署中,出于成本控制(如纯内网 NAT VPS)、网络环境限制(如校园网/公司内网/家庭宽带无公网 IP)或极致的安全考虑(不希望将 22 端口直接暴露在公网遭暴破),我们经常会遇到没有公网 IP(甚至没有公网出口)的 VPS。

针对这种场景,如何安全、高效地通过 SSH 远程连接并管理 VPS?本文为你盘点目前主流的五大解决方案,并提供详细的实施指南。

方案概览

方案分类 代表工具 / 技术 依赖条件 核心特点
即时终端共享 sshx 可访问 sshx.io 节点 开箱即用,0 配置,秒级生成 Web 共享终端
应用层 Web 终端 ttyd + Cloudflare Tunnel 免费 Cloudflare 账号 零客户端依赖,搭配身份认证打造持久化 Web Shell
虚拟局域网 (SD-WAN) Tailscale / ZeroTier / headscale 控制平面的连接 体验最接近直连,设备自动组成 P2P 内网
反向穿透 (Reverse Proxy) Frp / Rathole / SSH Reverse Tunnel 一台带公网 IP 的中转机器 稳定、自建自由度高、传统穿透方案
边缘穿透 (Zero Trust) Cloudflare Tunnel (cloudflared) 免费 Cloudflare 账号 + 域名 安全性极高,无公网 IP 节点自动打通 Tunnel

方案一:基于 WebRTC 的即时终端共享(sshx)

如果你需要最快速度连上 VPS,或者想要临时分享终端给他人协作调试,sshx 是目前最方便的轻量级无公网连接方案。

工作原理

sshx 是一个用 Rust 编写的开源轻量工具。运行后,它会自动建立与 sshx.io 官方中继节点的双向加密连接(基于 WebRTC / WebSocket),并生成一个唯一的加密控制台网址。任何人在浏览器打开该网址即可直接控制终端,且支持多人协同操作。

实施步骤

第一步:下载并运行 sshx

在无公网 IP 的 VPS 上直接运行安装与启动脚本:

1
curl -sSf https://sshx.io/get | sh -s run

运行后,控制台会立即输出类似如下的连接信息:

1
2
sshx v0.2.3
➜ Link: https://sshx.io/s/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

第二步:浏览器访问

复制控制台输出的链接到本地电脑或手机的浏览器中打开,即可立刻进入可交互的 Shell 界面。

第三步:作为后台持久化服务运行(可选)

如果你希望 sshx 能够常驻后台,在系统启动时自动建立链接,可以将其写成 init.dsystemd 服务:

1
2
3
# 下载二进制文件至系统目录
curl -sSf https://sshx.io/get | sh
mv sshx /usr/local/bin/

创建 /etc/init.d/sshx 服务脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/sh
### BEGIN INIT INFO
# Provides: sshx
# Required-Start: $network $remote_fs
# Short-Description: sshx web terminal sharing
### END INIT INFO

SSHX_BIN="/usr/local/bin/sshx"
SSHX_PID="/var/run/sshx.pid"
LOG_FILE="/var/log/sshx.log"

start() {
echo "Starting sshx..."
if [ ! -f "$SSHX_PID" ] || ! kill -0 $(cat "$SSHX_PID") 2>/dev/null; then
$SSHX_BIN run > "$LOG_FILE" 2>&1 &
echo $! > "$SSHX_PID"
echo "sshx started. Check $LOG_FILE for the connection link."
fi
}

stop() {
echo "Stopping sshx..."
[ -f "$SSHX_PID" ] && kill $(cat "$SSHX_PID") 2>/dev/null && rm -f "$SSHX_PID"
}

case "$1" in
start) start ;;
stop) stop ;;
restart) stop; sleep 1; start ;;
*) echo "Usage: $0 {start|stop|restart}" ;;
esac

赋予执行权限并启动:

1
2
chmod +x /etc/init.d/sshx
/etc/init.d/sshx start

启动后查看 /var/log/sshx.log 即可获取远程访问的专属网址。

方案二:Web 终端 + Cloudflare 穿透(全自主掌控 Web Shell)

如果你希望拥有一个固定域名、支持长效密码认证的私有 Web 终端,将 ttydCloudflare Tunnel 结合是更优雅的持久化方案。

工作原理

ttyd 在 VPS 本地将 Bash/Zsh 暴露为一个 Web 服务(如 127.0.0.1:7681),再利用 cloudflared 建立一条由内向外的加密隧道连接至 Cloudflare 边缘节点。

实施步骤

第一步:VPS 部署 ttyd

1
2
curl -L -o /usr/local/bin/ttyd https://github.com/tsl0922/ttyd/releases/latest/download/ttyd.x86_64
chmod +x /usr/local/bin/ttyd

第二步:部署 Cloudflare Tunnel

1
2
3
4
5
6
7
curl -L -o /usr/local/bin/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
chmod +x /usr/local/bin/cloudflared

# 登录授权并创建隧道
cloudflared tunnel login
cloudflared tunnel create my-vps-tunnel
cloudflared tunnel route dns my-vps-tunnel ttyd.yourdomain.com

第三步:编写统一后台管理脚本 (/etc/init.d/webterminal)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh
### BEGIN INIT INFO
# Provides: webterminal
# Required-Start: $network $remote_fs $syslog
# Short-Description: Web Terminal with ttyd and cloudflared
### END INIT INFO

TTYD_BIN="/usr/local/bin/ttyd"
PORT="7681"
AUTH_USER="admin"
AUTH_PASS='your_password'
TUNNEL_NAME="my-vps-tunnel"
TTYD_PID="/var/run/ttyd.pid"
CF_PID="/var/run/cloudflared.pid"

start() {
echo "Starting Web Terminal Service..."
if [ ! -f "$TTYD_PID" ] || ! kill -0 $(cat "$TTYD_PID") 2>/dev/null; then
$TTYD_BIN -p $PORT -c "$AUTH_USER:$AUTH_PASS" -W bash > /dev/null 2>&1 &
echo $! > "$TTYD_PID"
fi

if [ ! -f "$CF_PID" ] || ! kill -0 $(cat "$CF_PID") 2>/dev/null; then
cloudflared tunnel run --url http://localhost:$PORT $TUNNEL_NAME > /dev/null 2>&1 &
echo $! > "$CF_PID"
fi
}

stop() {
echo "Stopping Service..."
[ -f "$CF_PID" ] && kill $(cat "$CF_PID") 2>/dev/null && rm -f "$CF_PID"
[ -f "$TTYD_PID" ] && kill $(cat "$TTYD_PID") 2>/dev/null && rm -f "$TTYD_PID"
}

case "$1" in
start) start ;;
stop) stop ;;
restart) stop; sleep 2; start ;;
*) echo "Usage: $0 {start|stop|restart}" ;;
esac

给予权限并启动:

1
2
chmod +x /etc/init.d/webterminal
/etc/init.d/webterminal start

直接在浏览器打开 https://ttyd.yourdomain.com 即可输入账号密码连接。

方案三:全局 overlay 虚拟网(Tailscale / ZeroTier)

如果你希望保留原汁原味的传统 SSH 终端体验(使用本地 Kitty、iTerm2、MobaXterm 等),且需要 SCP/SFTP 传输文件,Tailscale 是最佳选择。

工作原理

利用 WireGuard 加密协议建立内网 P2P 隧道。即使 VPS 无公网 IP,只要它能访问 Tailscale 控制节点,就能与你的本地电脑分配在同一个虚拟内网(如 100.x.y.z)。

实施步骤

  1. VPS 端安装
1
2
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

点击控制台输出的链接,登录账号完成绑定。

  1. 本地连接

本地电脑同样安装 Tailscale 并登录同一账号。查看 VPS 的虚拟 IP(如 100.115.92.10)后,在本地终端直接连接:

1
ssh root@100.115.92.10

方案四:传统反向隧道 (Frp / SSH 反向代理)

如果你手里有另一台带有公网 IP 的中转 VPS,采用 Frp 是最经典的选择。

工作原理

无公网 IP 的内网 VPS(Frpc 客户端)主动向公网 VPS(Frps 服务端)建立长连接。当外界访问公网 VPS 的指定端口(如 2222)时,流量会被转发至内网 VPS 的 22 端口。

实施步骤

  1. 公网 VPS 配置 frps.toml
1
bindPort = 7000

启动服务:./frps -c ./frps.toml

  1. 无公网 VPS 配置 frpc.toml
1
2
3
4
5
6
7
8
9
serverAddr = "你的公网VPS_IP"
serverPort = 7000

[[proxies]]
name = "vps-ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2222

启动客户端:./frpc -c ./frpc.toml

  1. 本地连接
1
ssh -p 2222 root@你的公网VPS_IP

方案五:Cloudflare Tunnel SSH 访问 (零信任原生 SSH)

如果你不想将 SSH 端口露在外网被暴力破解,可以使用 Cloudflare 原生的 SSH Over Cloudflare Tunnel 方案。

工作原理

VPS 仅保持与 Cloudflare 的 WebSocket 隧道,本地电脑安装 cloudflared 并将其配置为 SSH 的 ProxyCommand 建立连接。

实施步骤

  1. VPS 端配置 config.yml
1
2
3
4
5
6
7
tunnel: my-ssh-tunnel
credentials-file: /root/.cloudflared/xxxx.json

ingress:
- hostname: ssh.yourdomain.com
service: ssh://localhost:22
- service: http_status:404

启动:cloudflared tunnel run my-ssh-tunnel

  1. 本地电脑配置 ~/.ssh/config
1
2
3
4
Host my-vps
HostName ssh.yourdomain.com
User root
ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h
  1. 本地直接连入
1
ssh my-vps

总结与选型建议

  1. 追求极致快速 / 临时共享调试:首选 方案一(sshx)。不需要域名和账号配置,一行命令生成链接,即开即用。
  2. 需要私有持久 Web 终端:推荐 方案二(ttyd + Cloudflare)。具备身份验证,适合从任何设备的浏览器随时登录。
  3. 日常运维 / 多节点管理 / SFTP 文件传输:推荐 方案三(Tailscale)。构建无感虚拟内网,体验与公网 IP 无异。
  4. 自建可控 / 已有公网中转机:推荐 方案四(Frp)。传统成熟,适合批量配置穿透。
  5. 企业级安全 / 零信任防护:推荐 方案五(Cloudflare Access SSH)。收拢所有入站端口,彻底规避暴露面。

本文由 BOSH 的博客助手 HerMes 整理 🖥️

原文链接:[本地上传]

本文作者:BOSh
本文链接:http://bosh.zz.ac/posts/32213.html
版权声明:本文由BoSh发布,部分内容来源于网络。