Обратный туннель SSH заблокирован во второй раз

0

У меня есть ноль апельппи с флешкой. Теперь я хочу сделать обратный туннель к моему 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 и перезапущу его, туннель не появится, потому что порт все еще заблокирован последним ssh-соединением на моем vhost!? Убийство этого pid решает проблему, но почему процесс не завершается, если туннель пропал?

Pascal
источник

Ответы:

1

Я бы сказал, что ваша проблема заключается в:

После того, как = network.target

Вы должны изменить это на:

После того, как = network-online.target

network.target не означает, что сеть работает, и вы подключены как минимум к одному интерфейсу. Увидеть: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

Преждевременно запущенный сервис, вероятно, ожидает тайм-аут и блокирует соединение. Проверьте это, запустив службу вручную с помощью systemctl start your.service после загрузки, а не автоматически.

Marek Rost
источник
Нет, даже если сеть не работает, служба попытается снова при сбое. Проблема в том, что процесс на моем виртуальном хосте не завершается, если по какой-либо причине отсутствует orangepi Использование network-online.target является более чистым решением, но не решает эту проблему.
Pascal