每日签到奶昔超市积分商城奶昔访达
返回列表 发布新帖
查看: 129|回复: 0

[教程] 用一台闲置小鸡,搭个私有版 ngrok(sish 内网穿透实战)

发表于 2025-12-25 14:39:37 | 查看全部 |阅读模式

登录后免广告,享受更多奶昔会员权益!

您需要 登录 才可以下载或查看,没有账号?注册

×
手里正好有一台 VMRack 的闲置小鸡,性能一般高但胜在公网 IP 稳定。与其吃灰,不如拿来干点实事,于是折腾了一套 基于 sish 的私有内网穿透服务,效果比预期好不少。

简单说一句结论:
够轻、够稳、够省事,个人或小团队完全够用。

sish 是一个开源的反向隧道项目,功能上和 ngrok 类似,但部署在自己服务器上,完全可控。

为什么选 sish?
用下来有几个点比较打动我:

客户端零安装:只要有 SSH,任何系统都能用
服务端自动申请 HTTPS 证书:直接走 Let’s Encrypt
支持泛域名:每个服务一个子域名,很清爽
资源占用极低:小鸡也能跑
安全可控:公钥白名单,谁能用你说了算
一句话总结:

非商业场景下,这是我目前最顺手的内网穿透方案。

:zero: 前置条件
在开始前,你需要准备:

一台 有公网 IP 的 Linux VPS(本文使用的是 VMRack 云服务,其他商家同理)
一个域名(强烈建议托管在 Cloudflare)
本地机器已配置 SSH key
:one: Cloudflare 侧的 DNS 设置
在 Cloudflare 面板新增一条解析:

Name:*(泛解析)
Content:你的 VPS 公网 IP
Proxy status:DNS only(灰云)
:warning: 这里一定不要开小黄云,否则证书和回源都会出问题。

如果你习惯分开用,也可以单独加一条:

ssh.your-domain.xyz → VPS_IP
:two: 调整 VPS 默认 SSH 端口(很关键)
为了让 sish 直接监听 22 端口,必须先把系统自带的 SSH 挪走,否则会冲突。

编辑配置文件:

vim /etc/ssh/sshd_config
修改为类似这样:

Port 10000
#Port 22
重启 SSH 服务:

systemctl restart sshd
:warning: 注意事项:

之后登录 VPS 记得带 -p 10000
防火墙提前放行:10000 / 80 / 443
:three: 安装 sish 并准备运行环境
这一步主要是做三件事:
建用户 → 下程序 → 准备密钥

直接按顺序执行即可。

# 创建系统用户
useradd --system --home /opt/sish --shell /usr/sbin/nologin sish || true
mkdir -p /opt/sish/{ssl,keys,pubkeys,templates}
chown -R sish:sish /opt/sish
下载并安装 sish(二进制版,amd64):

cd /tmp
wget https://github.com/antoniomika/s ... .linux-amd64.tar.gz
tar -xvf sish-2.20.0.linux-amd64.tar.gz
install -m 0755 sish-2.20.0.linux-amd64/sish /usr/local/bin/sish
拉取默认模板:

git clone --depth 1 https://github.com/antoniomika/sish.git /tmp/sish-src
cp -r /tmp/sish-src/templates /opt/sish/
chown -R sish:sish /opt/sish/templates
生成服务端 SSH Host Key:

sudo -u sish ssh-keygen -t ed25519 -N "" -f /opt/sish/keys/ssh_host_ed25519_key
rm /opt/sish/keys/ssh_host_ed25519_key.pub
:four: 启用公钥鉴权(防止被白嫖)
sish 默认支持 SSH 公钥白名单,这一点非常加分。

在你本地电脑上查看自己的公钥:

cat ~/.ssh/id_ed25519.pub
然后在 VPS 上写入:

echo "你的公钥内容" > /opt/sish/pubkeys/me.pub
chown sish:sish /opt/sish/pubkeys/me.pub
之后,只有这个 key 才能建立隧道连接。

:five: 配置 systemd 服务(核心)
创建服务文件:

vim /etc/systemd/system/sish.service
注意替换你自己的域名和邮箱:

[Unit]
Description=sish tunnel server
After=network-online.target

[Service]
User=sish
Group=sish
WorkingDirectory=/opt/sish

AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=true

ExecStart=/usr/local/bin/sish \
  --ssh-address=:22 \
  --http-address=:80 \
  --https-address=:443 \
  --domain=your-domain.xyz \
  --authentication=true \
  --authentication-keys-directory=/opt/sish/pubkeys \
  --private-keys-directory=/opt/sish/keys \
  --https \
  --https-certificate-directory=/opt/sish/ssl \
  --https-ondemand-certificate \
  --https-ondemand-certificate-accept-terms \
  --https-ondemand-certificate-email=your-email \
  --bind-random-subdomains=false \
  --force-requested-subdomains=true

Restart=always
RestartSec=2
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target
启动并检查状态:

systemctl daemon-reload
systemctl enable --now sish
systemctl status sish
:six: 实际使用(真的只要一行)
假设你本地有个 Web 服务跑在 8080,想映射到公网:

ssh -R dev:80:127.0.0.1:8080 ssh.your-domain.xyz
成功后可直接访问:

https://dev.your-domain.xyz
http://dev.your-domain.xyz
首次 HTTPS 访问稍慢是正常的,sish 会自动去申请证书。

一些使用中的坑与提醒
HTTPS 首次访问 ≈ 等证书,不是卡死
Cloudflare 必须灰云
公钥没放进 /opt/sish/pubkeys/ 一定连不上
VMRack 这类小鸡跑 sish 非常合适,CPU 和内存几乎没压力
总结一句
如果你手里也有一台 VMRack 或其他闲置 VPS,
不想再折腾花里胡哨的客户端,
sish 是一个非常干净、实用、长期可用的内网穿透方案。

后续我也准备用它挂开发环境、Webhook、临时服务,比公网开端口舒服多了。
爱生活,爱奶昔~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2026 Naixi Networks. 沪ICP备13020230号-1|沪公网安备 31010702007642号手机版小黑屋RSS
返回顶部 关灯 在本版发帖
快速回复 返回顶部 返回列表