我有一台带有 umts 棒的 orangepi zero。现在我想建立一个到我的 vhost 的反向隧道。
[Unit]
Description=UMTS Reverse SSH Service
ConditionPathExists=|/usr/bin
After=network.target
[Service]
ExecStart=/usr/bin/ssh -NTC -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -o StrictHostKeyChecking=no -i %h/.ssh/orangepi -R 7878:localhost:3000 root@xxx
# Restart every >2 seconds to avoid StartLimitInterval failure
RestartSec=3
Restart=always
[Install]
WantedBy=multi-user.target
这项服务正在运行。但是,如果我关闭 orangepi 并重新启动它,隧道就不会出现,因为端口仍然被我的 vhost 上的最后一个 ssh 连接阻止!?杀死那个 pid 可以解决问题,但是为什么如果隧道消失,进程不会终止?
答案1
我想说你的问题在于:
之后=网络.目标
您应该将其更改为:
之后=网络在线.目标
network.target
并不意味着网络已启动并且您至少在一个接口上处于在线状态。请参阅:https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
过早启动的服务可能正在等待超时并阻止连接。通过在systemctl start your.service
启动后手动启动服务(而不是自动启动)来验证这一点。