Я нарисовал несколько эскизов
Компьютер, на котором набрана команда ssh tunnel, называется « ваш хост».


Вступление
local: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.
ssh -L sourcePort:forwardToHost:onPort connectToHost
означает: соединиться с SSH к connectToHost
и вперед все попытки подключения к локальной sourcePort
к порту onPort
на машине под названием forwardToHost
которая может быть достигнута с машины connectToHost
remote: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.
ssh -R sourcePort:forwardToHost:onPort connectToHost
означает: соединиться с SSH к connectToHost
и вперед все попытки подключения к удаленному sourcePort
к порту onPort
на машине под названием forwardToHost
которая может быть достигнута с локального компьютера.
Ваш пример
Вы хотите подключиться к удаленному серверу через компьютер EC2, верно? Тогда второе изображение представляет ваш сценарий. remotehost
- это ваша машина EC2. farawayhost
- это ваш удаленный сервер с его розовым портом интереса (в порту рисования 456
, но в вашем случае порт 22
). Таким образом, команда должна выглядеть так:
ssh -L 22528:REMOTE-IP:22 EC2-MACHINE-IP
Номер порта зеленого порта - 22528
. Теперь вы можете получить доступ к удаленному серверу с помощью SSH через
ssh -p 22528 localhost