Вы просите его прослушивать ваш локальный порт 22 и пересылать соединения на порт 8090 удаленной системы. Вы не можете этого сделать, потому что ваш локальный порт 22 уже занят вашим локальным сервером SSH.
Я думаю, что вы ищете удаленную пересылку. Замена -L 22:localhost:8090
на -R 8090:localhost:22
указывает удаленному хосту прослушивать порт 8090 и пересылать запросы вашему SSH-серверу.
Если вы оставляете соединение работающим, чтобы позже можно было войти с удаленного сайта, вам нужно будет убедиться, что соединение не истекло из-за неактивности, добавив соответствующие параметры ( -o TCPKeepAlive=yes
или -o ServerAliveInterval=30
).
Таким образом, вы получите что-то вроде:
ssh -N user@my_server -R 8090:localhost:22 -o ServerAliveInterval=30
Кроме того, если в какой-то момент один из сетевых переходов между вами и сервером не работает, соединение будет разорвано, несмотря на любые заданные вами параметры KeepAlive, поэтому вы можете добавить эту команду в inittab или просмотреть пакет daemontools или ваш дистрибутив. эквивалентно, так что он всегда запускается при загрузке и перезапускается при выходе по какой-то причине, кроме выключения системы (или вы можете запустить его из сценария оболочки, который работает бесконечно, но init или daemontools - более чистые решения).