公众号二维码

KG-Tunnel 使用教程

没有公网 IP 的 Windows 电脑,也能被人远程连上桌面。 借助一台有公网 IP 的 Linux 服务器做中转,两端都主动连它,数据经它转发, 被控端不需要开放任何入站端口

KG-Tunnel 内内通 v1.01
Windows · 约 38 MB · 免费
百度网盘下载
提取码:dr2f

1.它是什么

先看一张图,理解数据怎么走:

KG-Tunnel 拓扑示意图
图 1 · KG-Tunnel 拓扑示意图
  • 被控端(要被远程的 Windows):主动连跳板机,建立反向隧道,把跳板机上的一个端口(例如 13389)映射到自己的远程桌面 3389。
  • 主控端(你手上的电脑):主动连跳板机,建立正向隧道,把本机端口映射到跳板机那个端口。
  • 最后用 Windows 自带的「远程桌面」(mstsc)连本机 127.0.0.1:本地端口,就到达被控端的桌面了。
核心优势:两端都是主动往外连,所以被控端没有公网 IP 也没关系,也不需要开任何入站端口。

2.使用前准备

⚠ 使用前请先确认这两条

① 被控端电脑已开启 Windows 远程桌面。

② 你有一台带 SSH 的公网服务器(跳板机),Linux 系统,能通过 SSH 登录。

2.1 被控端开启远程桌面

在被控端电脑上:

  1. 打开「设置」→「系统」→「远程桌面」
  2. 打开「启用远程桌面」开关
重要提醒:被控端电脑必须保持用户已登录状态(锁屏可以,注销 / 关机不行), 否则 Windows 不会监听远程桌面端口 3389,别人连不进来。建议配置自动登录(见第 7 节)。

2.2 准备一台公网服务器

你需要一台有公网 IP 的 Linux 服务器(阿里云、腾讯云、Vultr、搬瓦工都行), SSH 能登录即可,配置要求很低(1 核 1G 就够)。

服务器需要满足:

  • SSH 能登录(默认 22 端口,或你自定义的端口)
  • 允许 TCP 端口转发(sshd 默认允许,不用改)
不需要改任何 sshd 配置。 默认的 GatewayPorts no 正是我们想要的 —— 反向隧道只绑本机 127.0.0.1,不暴露公网。

3.跳板机配置(可选,但建议做)

如果你的跳板机是全新的,默认配置就能用。但为了安全,建议做下面两件事:

3.1 创建专用 SSH 用户

在跳板机上:

sudo useradd -m -s /usr/sbin/nologin kgtunnel
sudo passwd kgtunnel
# 按提示设一个密码

-s /usr/sbin/nologin 表示这个用户不能登录 shell,只能用来做端口转发。

3.2 限制这个用户的权限(更安全)

编辑 /etc/ssh/sshd_config,在文件末尾加:

Match User kgtunnel
    AllowTcpForwarding remote
    PermitOpen none
    PermitTTY no
    ForceCommand /usr/sbin/nologin

改完重启 sshd:

sudo systemctl restart sshd
# 或者
sudo service sshd restart
如果你嫌麻烦,可以跳过这一节,直接用默认配置也能跑通。只是安全性略低。

4.被控端使用

被控端是「要被远程」的 Windows 电脑,没有公网 IP。 它运行 KG-Tunnel 被控端程序,主动连跳板机,建立反向隧道。

被控端界面
图 2 · 被控端界面

4.1 填写参数

字段填什么说明
本地 IPlocalhost一般不用改
远程桌面端口3389Windows 默认 3389,没改过就填这个
本地远程数据传输端口比如 13389跳板机上的中转端口,建议 30000~40000。记住这个值,主控端要用
跳板机 IP你的公网 IP服务器的公网 IP
SSH 端口22服务器 SSH 端口,没改过就是 22
用户名服务器的 SSH 用户名比如 root 或 kgtunnel
密码服务器 SSH 密码和下面的私钥二选一
私钥(非必要)留空如果用密钥登录再填,见第 8 节

4.2 启动隧道

  1. 点「启动隧道」按钮
  2. 下方状态灯变绿,显示「✅ 隧道已建立」
  3. 日志框显示类似:反向隧道已建立: 跳板机 127.0.0.1:13389 -> 本机 localhost:3389
保持程序运行。如果关掉程序或重启电脑,隧道就断了。 建议勾选「开机自动启动隧道」(见第 7 节)。

5.主控端使用

主控端是你用来远程别人的电脑。它主动连跳板机,建立正向隧道, 然后你就能用 mstsc 连过去了。

主控端界面
图 3 · 主控端界面

5.1 填写参数

字段填什么说明
本地监听端口比如 13389本机端口,随便填,没被占用就行
跳板机目标地址127.0.0.1一般不用改
跳板机目标端口和被控端一致必须等于被控端的「本地远程数据传输端口」
跳板机 IP / SSH 端口 / 用户名 / 密码和被控端一样连同一台服务器,填一样的
端口对应关系
图 4 · 端口对应关系

5.2 启动隧道

  1. 点「启动隧道
  2. 状态灯变绿,日志显示:正向隧道已建立: 本机 127.0.0.1:13389 -> 跳板机 127.0.0.1:13389

5.3 打开远程桌面

隧道建立后,点「打开远程桌面」按钮。 Windows 会自动弹出「远程桌面连接」窗口,并在地址栏填好 127.0.0.1:13389

数据流向示意
图 5 · 数据流向示意

点「连接」,输入被控端 Windows 的登录用户名和密码 (注意:是被控端 Windows 的账号密码,不是你服务器 SSH 的密码)。

6.帮助与打赏

软件里的「帮助」页有使用说明、端口对应关系和打赏入口。

帮助页
图 6 · 帮助页

如果这个工具帮你少踩了几个坑,欢迎扫码请我吃碗面。打赏完全自愿,不打赏也照样用。

7.无人值守:开机自动启动

7.1 配置被控端电脑自动登录

被控端电脑必须保持登录状态,远程桌面端口才会监听。先配置自动登录:

  1. Win + R,输入 netplwiz,回车
  2. 选中你平时用的账户
  3. 取消勾选「要使用本计算机,用户必须输入用户名和密码」
  4. 点「应用」,输入该账户的密码两次,确定

7.2 配置 KG-Tunnel 开机自启

在被控端 KG-Tunnel 界面里:

  1. 勾选「记住我的输入
  2. 勾选「开机自动启动隧道
  3. 点「启动隧道」,确认能连
  4. 关掉程序
注意:密码不会被保存。自动启动需要用到私钥登录(见第 8 节), 否则每次还是要手输密码。

8.用密钥登录(推荐,可无人值守)

密码不会保存。如果你想要无人值守自动建隧道,需要用密钥登录

8.1 在被控端电脑生成密钥

在被控端电脑上打开 PowerShell:

ssh-keygen -t ed25519 -f $env:USERPROFILE\.ssh\kg_tunnel

一路回车(密码短语留空)。会生成两个文件:

  • C:\Users\你的用户名\.ssh\kg_tunnel(私钥)
  • C:\Users\你的用户名\.ssh\kg_tunnel.pub(公钥)

8.2 把公钥传到跳板机

type $env:USERPROFILE\.ssh\kg_tunnel.pub | ssh -p 22 你的用户名@跳板机IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

22你的用户名跳板机IP 换成你的。会提示输入一次密码。

8.3 测试免密登录

ssh -p 22 -i $env:USERPROFILE\.ssh\kg_tunnel 你的用户名@跳板机IP

不输密码能进服务器 → 成功。输入 exit 退出。

8.4 在 KG-Tunnel 里配置

  • 密码栏:留空
  • 私钥栏:填 C:\Users\你的用户名\.ssh\kg_tunnel

之后再配合第 7 节的开机自启,就能无人值守自动建隧道了。

9.常见问题 FAQ

Q1:连不上跳板机怎么办?

  1. 在被控端电脑上手动测:ssh -p 端口 用户名@跳板机IP,能不能进?
  2. 能进说明网络和凭据没问题,是 KG-Tunnel 参数错
  3. 不能进说明是网络或服务器问题,先解决 SSH 本身
  4. 看软件里的日志框,会有具体的错误信息

Q2:密码和私钥到底填哪个?

二选一。填了密码就不用选私钥;选了私钥密码栏就留空。

Q3:本地端口冲突怎么办?

改一个端口,建议 30000~40000 之间的数字。主控端的「本地监听端口」和被控端的「本地远程数据传输端口」都要改,且保持一致。

Q4:被控端必须有人登录吗?

是的。锁屏可以,注销 / 关机不行。原因:Windows 远程桌面服务只在用户登录后才监听 3389 端口。建议配置自动登录(见第 7 节)。

Q5:能连上跳板机,但远程桌面连不上?

  1. 被控端是否点了「启动隧道」,状态是否绿
  2. 主控端「跳板机目标端口」是否等于被控端「本地远程数据传输端口」
  3. 被控端 Windows 是否已开启远程桌面
  4. 被控端是否处于已登录状态

Q6:跳板机 sshd 要改什么配置?

什么都不用改。默认配置就满足。特别要注意 GatewayPorts 保持 no(默认值),这是安全关键。

Q7:数据安全吗?

整个链路是 SSH 加密的。跳板机只做端口转发,不存储任何数据。建议用自己控制的服务器。

10.安全建议

  • 不要用 root 账号做隧道,创建一个专用用户(见 3.1)
  • 保持 GatewayPorts no,不要改成 yes
  • 私钥文件不要泄露
  • 定期换 SSH 密码 / 密钥
  • 跳板机建议只做隧道专用,不要跑其他服务

11.反馈

如果有问题或建议,欢迎通过网站公众号私信联系。

公众号二维码

扫码关注公众号 · 私信反馈

最后更新:2026 年 9 月