本教程详细介绍如何通过 Systemd 配置持久化的 SSH 远程端口转发服务,包含完整的配置文件、自启动设置和故障排查方法。
SSH 远程端口转发服务配置指南
🔧 配置步骤
1. 创建 Systemd 服务文件
sudo nano /etc/systemd/system/ssh-tunnel.service
2. 服务文件配置
[Unit]
Description=SSH Remote Port Forward Service
After=network.target
[Service]
# 本地运行服务的用户
User=your_local_user
# SSH 命令配置
ExecStart=/usr/bin/ssh -N -R 22300:192.168.1.201:22300 [email protected] \
-o "ExitOnForwardFailure=yes" \
-o "ServerAliveInterval=60" \
-o "ServerAliveCountMax=3"
# 服务运行参数
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
📝 参数说明
-N: 仅建立端口转发,不执行远程命令-R: 设置远程端口转发ExitOnForwardFailure: 端口转发失败时立即退出ServerAliveInterval: 保活检测间隔(秒)ServerAliveCountMax: 最大重试次数
3. 服务管理命令
# 重新加载配置
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start ssh-tunnel
# 设置开机自启
sudo systemctl enable ssh-tunnel
# 查看服务状态
sudo systemctl status ssh-tunnel
# 实时查看日志
journalctl -u ssh-tunnel -f
📋 前置检查清单
SSH 密钥配置
# 生成 SSH 密钥(如果没有) ssh-keygen -t ed25519 -C "[email protected]"
复制公钥到远程服务器
ssh-copy-id [email protected]
2. **防火墙设置**
```bash
# 在远程服务器上检查端口
sudo netstat -tlnp | grep 22300
# 配置 UFW(如果使用)
sudo ufw allow 22300/tcp
🔍 故障排查
常见问题检查
| 问题 | 检查命令 |
|---|---|
| 服务状态 | systemctl status ssh-tunnel |
| 详细日志 | journalctl -u ssh-tunnel -n 50 |
| 端口占用 | netstat -tlnp | grep 22300 |
| SSH 连接 | ssh -v [email protected] |
连接测试
# 本地测试
curl http://localhost:22300
# 远程测试
curl http://8.154.81.6:22300
⚠️ 注意事项
- 确保 SSH 密钥已正确配置
- 检查远程服务器防火墙设置
- 验证本地服务用户权限
- 定期检查日志确保服务正常
- 建议配置备用端口或故障转移方案
🔒 安全建议
- 使用强密钥加密(ED25519/RSA 4096)
- 限制远程服务器上的端口访问范围
- 配置 SSH 密钥使用限制
- 定期更新系统和 SSH 服务
- 监控异常连接尝试
📚 参考资料
关于我
全平台同名”汪多多是只猫”,专注分享实用开源工具,让你的数字生活更自由!
关注我,发现更多旧物改造的乐趣与技巧!