docs(svn-tunnel): 完善SVN隧道部署与故障排查文档
- 将服务状态检查拆分为用户级和系统级,明确区分两种服务状态 - 补充用户级与系统级查看服务日志的命令示例 - 扩充常见故障排查内容,新增系统级服务启动失败与端
This commit is contained in:
@@ -167,29 +167,168 @@ https://127.0.0.1:18080/svn/houtai/001_后台软件/PRS-7050场站智慧管控/0
|
||||
|
||||
## 八 故障排查
|
||||
|
||||
### 8.1 服务状态检查
|
||||
### 8.1 用户级服务状态检查
|
||||
|
||||
```bash
|
||||
systemctl --user status svn-tunnel.service
|
||||
```
|
||||
|
||||
### 8.2 查看服务日志
|
||||
### 8.2 系统级服务状态检查
|
||||
|
||||
```bash
|
||||
sudo systemctl status svn-tunnel.service
|
||||
```
|
||||
|
||||
### 8.3 查看服务日志
|
||||
|
||||
**用户级服务**:
|
||||
|
||||
```bash
|
||||
journalctl --user -u svn-tunnel.service -f
|
||||
```
|
||||
|
||||
### 8.3 常见问题
|
||||
**系统级服务**:
|
||||
|
||||
```bash
|
||||
sudo journalctl -u svn-tunnel.service -f
|
||||
```
|
||||
|
||||
### 8.4 常见问题
|
||||
|
||||
1. **服务启动失败**:检查密钥路径和用户名是否正确
|
||||
2. **无法连接 SVN**:确认本地端口 18080 未被占用
|
||||
3. **隧道断开**:查看 autossh 日志,检查网络连接
|
||||
2. **无法连接 SVN**:确认端口(18080 或 48080)未被占用
|
||||
3. **隧道断开**:查看 autossh 或 SSH 日志,检查网络连接
|
||||
4. **系统级服务无法启动**:确认已完成本机 SSH 免密配置
|
||||
5. **端口占用冲突**:使用 `netstat -tunlp | grep 端口号` 检查
|
||||
|
||||
---
|
||||
|
||||
## 九 总结
|
||||
## 九 在跳板机部署公共隧道服务
|
||||
|
||||
通过 SSH 端口转发 + 密钥免密 + autossh + systemd 用户服务,可以在公司内网环境下:
|
||||
当需要在跳板机(如 `10.6.220.216`)上为多台开发机提供统一的 SVN 访问入口时,可以将隧道部署为系统级服务。
|
||||
|
||||
### 9.1 方案说明
|
||||
|
||||
**部署参数**:
|
||||
|
||||
| 项 | 值 |
|
||||
| :--- | :--- |
|
||||
| 对外端口 | **48080** |
|
||||
| SSH 端口 | **10022** |
|
||||
| SSH 用户 | **sunri**(示例) |
|
||||
| SSH 目标 | **localhost**(本机) |
|
||||
| SVN 实际地址 | **10.1.0.101:443** |
|
||||
|
||||
**角色定位**:跳板机作为 SVN 中继机,开发机通过 `https://10.6.220.216:48080/svn/...` 访问 SVN。
|
||||
|
||||
### 9.2 配置本机 SSH 免密
|
||||
|
||||
> ⚠️ 必须先完成免密配置,systemd 才能无交互启动
|
||||
|
||||
#### 步骤 1:生成密钥
|
||||
|
||||
```bash
|
||||
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""
|
||||
```
|
||||
|
||||
#### 步骤 2:添加到本机授权
|
||||
|
||||
```bash
|
||||
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
|
||||
chmod 600 ~/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
#### 步骤 3:测试免密登录
|
||||
|
||||
```bash
|
||||
ssh -p 10022 localhost
|
||||
```
|
||||
|
||||
✅ 不提示输入密码,直接登录成功即为配置完成。
|
||||
|
||||
### 9.3 创建系统级 systemd 服务
|
||||
|
||||
#### 创建服务文件
|
||||
|
||||
```bash
|
||||
sudo vi /etc/systemd/system/svn-tunnel.service
|
||||
```
|
||||
|
||||
#### 编写服务配置
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=SVN SSH Tunnel (48080 -> 10.1.0.101:443)
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=sunri
|
||||
ExecStart=/usr/bin/ssh \
|
||||
-p 10022 \
|
||||
-o ExitOnForwardFailure=yes \
|
||||
-o ServerAliveInterval=30 \
|
||||
-o ServerAliveCountMax=3 \
|
||||
-N \
|
||||
-L 0.0.0.0:48080:10.1.0.101:443 \
|
||||
localhost
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
**参数说明**:
|
||||
|
||||
- `User=sunri`:使用指定用户运行服务
|
||||
- `-L 0.0.0.0:48080:10.1.0.101:443`:监听所有网卡的 48080 端口
|
||||
- `ExitOnForwardFailure=yes`:端口转发失败时自动退出
|
||||
- `ServerAliveInterval=30`:每 30 秒发送心跳包
|
||||
- `Restart=always`:服务异常时自动重启
|
||||
|
||||
### 9.4 启动并设置开机自启
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable svn-tunnel.service
|
||||
sudo systemctl start svn-tunnel.service
|
||||
sudo systemctl status svn-tunnel.service
|
||||
```
|
||||
|
||||
查看状态应显示:
|
||||
|
||||
```
|
||||
Active: active (running)
|
||||
```
|
||||
|
||||
### 9.5 开发机配置 SVN
|
||||
|
||||
在任意开发机的 IDEA 中配置:
|
||||
|
||||
```
|
||||
https://10.6.220.216:48080/svn/houtai/001_后台软件/PRS-7050场站智慧管控/01_开发库/V1.00
|
||||
```
|
||||
|
||||
✅ SVN 看到的客户端 IP 为跳板机 IP
|
||||
✅ 支持文件名修改 / 提交 / 更新操作
|
||||
|
||||
### 9.6 安全加固(可选)
|
||||
|
||||
若需限制访问来源,可配置防火墙规则:
|
||||
|
||||
```bash
|
||||
# 仅允许特定网段访问 48080 端口
|
||||
sudo iptables -A INPUT -p tcp --dport 48080 -s 192.168.1.0/24 -j ACCEPT
|
||||
sudo iptables -A INPUT -p tcp --dport 48080 -j DROP
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 十 总结
|
||||
|
||||
通过 SSH 端口转发 + 密钥免密 + autossh/systemd 服务,可以在公司内网环境下:
|
||||
|
||||
- **长期稳定访问 SVN**
|
||||
- **无需手动输入密码**
|
||||
|
||||
Reference in New Issue
Block a user