
Возник из этого вопроса:Что такое переадресация портов SSH и в чем разница между локальной и удаленной переадресацией портов SSH, я запутался в этом использовании:
ssh -L 123:farawayhost:456 remotehost
ssh -L sourcePort:forwardToHost:onPort connectToHost
означает: подключиться по ssh кconnectToHost
и перенаправить все попытки подключения наместныйsourcePort
в портonPort
на машине под названиемforwardToHost
, к которому можно получить доступ сconnectToHost
машины.
Что означает "..., которыйможет быть достигнутоиз connectToHost
машины." что именно имеется в виду?
Если я правильно понимаю, ssh -L 123:localhost:456 remotehost
это частный случай для приведенной выше команды, когда и farawayhost
и remotehost
находятся на одной машине.
Так когда farawayhost
is и remotehost
are не на одной машине, как это работает? Это значит, что мне нужно remotehost
сначала войти в систему, а потом farawayhost
?
решение1
Не знаю, почему я сначала растерялся, может быть, потому, что изначальный ответ был недостаточно ясен, но потом я внезапно это понял.
Предположим, у меня есть 2 машины, публичные IP-адреса которых — 1.2.3.4
и 2.3.4.5
.
Использование будет следующим: , это вызовет переход на новую строку, требуя пароль на .ssh -L 10283:1.2.3.4:8000 [email protected] -N
username
2.3.4.5
при успешной аутентификации ssh
не будет входить в систему, поскольку -N
указано, но соединение было установлено. Поэтому любые данные, отправленные вместныйпорт 10283
сначала будет отправлен 2.3.4.5
через ssh
(порт 22
), затем 2.3.4.5
данные будут отправлены 1.2.3.4
на порт8000.
Теперь позвольте мне создать HTML-файл echo hello > index.html
и запустить http-сервер на 1.2.3.4
нем python -m http.server
.
А затем я печатаю localhost:10283
на своем локальном компьютере.
Локальный ПК:
На 1.2.3.4
: