Нужно сделать так, чтобы при старте ubuntu автоматически подимался ssh-туннель и поддерживался в рабочем состоянии.
Для этого создадим файлик сервиса, в него пропишем старт тоннеля.
Создаем файл /etc/systemd/system/secure-tunnel.service:
[Unit] Description=Setup a secure tunnel to remote server After=network.target [Service] ExecStart=/usr/bin/ssh -NT -i /home/user/.ssh/id_rsa -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 443 -R \*:2233:127.0.0.1:22 loginame@remote.server # Restart every >2 seconds to avoid StartLimitInterval failure RestartSec=5 Restart=always [Install] WantedBy=multi-user.target
В результате, компьютер, на котором прописан этот сервис будет устанавливать ssh-соединение, в котором будет работать туннель. Локальный порт машины 22 будет доступен на удаленном сервере remote.server на порту 2233. Мне это нужно для доступа по ssh к машине, которая работает за NAT.
Включаем и стартуем сервис:
sudo systemctl enable secure-tunnel.service sudo systemctl daemon-reload sudo systemctl start secure-tunnel.service
Для того, чтобы подключаться к сервису не только с localhost машины remote.server, но и с других хостов, на сервере remote.server нужно в файлике /etc/ssh/sshd_config сделать так:
GatewayPorts yes