SSH 内网穿透
约 711 字大约 2 分钟
2025-08-17
在服务器上安装好 frp 服务端,比如通过 1panel 的应用商店安装即可
方案:
在云服务器上运行
frps(frp 服务端),监听一个端口(例如7000为 frp 控制端口),并开放一个 TCP 映射端口(例如6000)用于 SSH 转发。在内网的 Ubuntu Server 上运行
frpc(frp 客户端),把本地192.168.31.223:22映射到云服务器的6000。使用
token(auth_token)做认证,云防火墙/安全组允许对应端口(7000、6000)。
在云服务器上(frps)配置示例
在服务器上创建配置文件 /etc/frp/frps.toml(或其他位置):
比如:/opt/1panel/apps/frps/frps/data/frps.toml,如果通过应用商店安装
[common]
# frps 控制端口(frpc 会连到这个端口)
bind_port = 7000
# 鉴权 token(frpc 必须相同)
token = "my_secret_token_123"
# 可选 dashboard(如不需要可删)
dashboard_addr = "0.0.0.0"
dashboard_port = 7500
dashboard_user = "admin"
dashboard_pwd = "adminpwd123"
# 日志(可按需改路径)
log_file = "/frp/log/frps.log"
log_level = "info"保存后需要重启运行 frps 的容器/应用,使配置生效。
注意(必须):在云厂商控制台/安全组里确保开放:
- TCP 7000(frp 控制端口) — 仅允许 frpc 源或你信任 IP 最好;如果不方便限制也必须开放以便 frpc 连接。
- TCP 6000(或你要使用的 remote_port) — 允许从你想要连接的 IP(如果需要全球可连,允许 0.0.0.0/0)。
在内网的 Ubuntu(目标机器 192.XXXXX.223)或你本地的 Windows frpc —— 编辑 frpc.toml
如果你把 frpc.exe 直接跑在那台 Ubuntu VM(推荐),local_ip 用 127.0.0.1,示例使用的是局域网中的虚拟机设备
[common]
server_addr = "YOUR_SERVER_IP"
server_port = 7000
token = "my_secret_token_123"
[ssh-remote]
type = "tcp"
local_ip = "192.XXXXX.223" # 如果 frpc 在同一台 VM 上,可改为 127.0.0.1
local_port = 22
remote_port = 6000先启动 / 重启 frps(云端),确认 frps 正常监听 bind_port 并加载了 frps.toml。
再启动 frpc(Windows 或内网机器):
frpc.exe -c frpc.toml启动后在 frps 日志里应该能看到 frpc 的连接注册信息,日志会显示 client 已连接并已注册 ssh-remote。
Linux启动:
chmod +x frpc
sudo ./frpc -c frpc.toml用 systemd(推荐长期运行)
创建一个 systemd 服务:
sudo nano /etc/systemd/system/frpc.service写入内容:
[Unit]
Description=FRP Client
After=network.target
[Service]
Type=simple
ExecStart=/home/user1/frp/frpc -c /home/user1/frp/frpc.toml
Restart=on-failure
[Install]
WantedBy=multi-user.target然后启动:
sudo systemctl daemon-reload
sudo systemctl start frpc
sudo systemctl enable frpc # 开机自启
sudo systemctl status frpc # 查看状态
sudo systemctl restart frpc # 重启防止网络未连接成功就启动 FRP
[Unit]
Description=FRP Client
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/home/user1/frp/frpc -c /home/user1/frp/frpc.toml
Restart=always
RestartSec=10
User=user1
WorkingDirectory=/home/user1/frp
[Install]
WantedBy=multi-user.target去掉 User= 行后,systemd 默认用 root 启动服务。只要 ExecStart 和 WorkingDirectory 的路径可访问,服务就会以 root 权限运行。
安全性:用 root 启动 FRP 意味着 FRP 进程有完整系统权限,如果被攻击可能会带来风险。通常推荐用普通用户启动。