Túnel inverso SSH bloqueado por segunda vez

0

Tengo un orangepi cero con un palo de umts. Ahora quiero hacer un túnel inverso a mi 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

Este servicio esta funcionando. Pero si apago el orangepi y lo reinicio, el túnel no aparece porque el puerto todavía está bloqueado por la última conexión ssh en mi vhost. Matar ese pid resuelve el problema, pero ¿por qué el proceso no termina si el túnel se ha ido?

Pascal
fuente

Respuestas:

1

Diría que tu problema radica en:

Después = network.target

Deberías cambiar eso a:

Después = network-online.target

network.targetno significa que la red esté activa y que esté conectado en al menos una interfaz. Ver: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

El servicio iniciado prematuramente probablemente esté esperando un tiempo de espera y bloquea la conexión. Verifique eso iniciando el servicio manualmente systemctl start your.servicedespués del arranque y no automáticamente.

Marek Rost
fuente
No, incluso si la red no está activa, el servicio lo intentará nuevamente en caso de falla. El problema es que el proceso en mi vhost no termina si el orangepi desaparece por alguna razón. Usar network-online.target es la solución más limpia pero no resuelve este problema.
Pascal