Проброс портов на удаленный сервер через SSH

Базовый проброс выполняется командой:

ssh -R <Local_Port_Service>:localhost:<Remote_Port> <User>@<Server_IP> -i /home/path_to_home_dir/.ssh/private_key -N

В результате:

Автоматическое восстановление проброса:

Если проброс необходимо автоматически восстанавливать при разрыве можно использовать autossh:

autossh -NR <Local_Port_Service>:localhost:<Remote_Port> -M 0 -o "ServerAliveInterval 10" -o "ServerAliveCountMax 3" <User>@<Server_IP> -i /home/path_to_home_dir/.ssh/private_key
Danger

Такой проброс будет восстанавливаться в случае сетевого разрыва но не после перезагрузки сервера источника (локального сервера)

Проброс как сервис:

Для восстановления после перезагрузки создадим сервис

nano /etc/systemd/system/autossh.service

следующего содержимого:

[Unit]
Description=AutoSSH to My Server
After=network.target

[Service]
Environment="AUTOSSH_GATETIME=0"
Environment="AUTOSSH_LOGFILE=/var/log/autossh"
ExecStart=autossh -NR  <Local_Port_Service>:localhost:<Remote_Port> -M 0 -o "ExitOnForwardFailure=yes" -o "ServerAliveInterval=180" -o "ServerAliveCountMax=3" -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /home/path_to_home_dir/.ssh/private_key <User>@<Server_IP> -p 22
Restart=always

[Install]
WantedBy=multi-user.target

запустить сервис:

systemctl daemon-reload
systemctl enable autossh