SSH tunel zwrotny zablokowany drugi raz

0

Mam zero orangepi z kijem umts. Teraz chcę zrobić tunel zwrotny do mojego vhosta.

[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

Ta usługa działa. Ale jeśli wyłączę orangepi i uruchomię go ponownie, tunel nie pojawi się, ponieważ port jest nadal blokowany przez ostatnie połączenie ssh na moim vhost! Zabicie tego pid rozwiązuje problem, ale dlaczego proces nie zostaje zakończony, jeśli tunel zniknie?

Pascal
źródło

Odpowiedzi:

1

Powiedziałbym, że twój problem leży w:

After = network.target

Powinieneś zmienić to na:

After = network-online.target

network.targetnie oznacza, że ​​sieć jest uruchomiona i masz połączenie z przynajmniej jednym interfejsem. Zobacz: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

Przedwcześnie uruchomiona usługa prawdopodobnie czeka na przekroczenie limitu czasu i blokuje połączenie. Sprawdź to, uruchamiając usługę ręcznie systemctl start your.servicepo rozruchu, a nie automatycznie.

Marek Rost
źródło
Nie, nawet jeśli sieć nie działa, usługa spróbuje ponownie w razie awarii. Problem polega na tym, że proces na moim vhostie nie zostaje zakończony, jeśli orangepi zniknie z jakiegokolwiek powodu. Użycie network-online.target jest czystszym rozwiązaniem, ale nie rozwiązuje tego problemu.
Pascal