SSH: есть ли способ указать один порт для прослушивания сервера и один для отправки данных на сервер? - PullRequest
0 голосов
/ 06 марта 2012

Я узнал, что для работы TCP требуется два порта: один для отправки данных на сервер, а другой для получения данных с сервера.Есть ли способ указать - специально для ssh - оба этих порта?У меня сложилось впечатление, что метод локального туннеля предназначен для исходящего локального порта и входящего порта сервера, но не для входящего локального порта.

Ответы [ 3 ]

1 голос
/ 06 марта 2012

То, что вы узнали, не совсем правильно.Соединение TCP находится между парой комбинаций IP / порт (IP-адрес клиента, IP-порт сервера), но каждый конец использует только один порт.Например, соединение может быть между клиентом в 1.2.3.4:65432 и сервером в 5.6.7.8:22.

Клиентский порт совершенно несущественен для большинства приложений, включая SSH.Вы можете заставить SSH использовать «привилегированный» (до 1024) порт, используя директиву UsePrivilegedPort, но она доступна только для root.

0 голосов
/ 06 марта 2012

Я узнал, что для работы TCP требуется два порта: один для отправки данных на сервер и один для получения данных с сервера

Нет, это не так. Требуется один локальный порт и один удаленный порт. Это двунаправленный протокол, а также полнодуплексный. Поэтому ваш вопрос не нуждается в ответе.

0 голосов
/ 06 марта 2012

С помощью openssh вы можете создавать зашифрованные туннели для направления трафика из одной точки в другую. Вы можете использовать флаги -L и / или -R для выполнения задания.

Пример 1. Вы можете привязать локальный порт на клиентском ПК, который будет перенаправлен на другую машину, проходящую через SSH-сервер;

(ssh user@sshserver -L<local_port>:<remote_ip>:<remote_port>)
ssh user@192.168.1.1 -L8080:192.168.1.20:8090

Пример 2: Вы можете привязать порт на удаленном компьютере, который подключен к порту вашего локального компьютера, проходящему через SSH-сервер;

(ssh user@sshserver -R<local_port>:<remote_ip>:<remote_port>)
ssh user@192.168.1.1 -R8080:192.168.1.20:8080

Пример 3. Вы можете привязать локальный порт на клиентском компьютере, который будет перенаправлен на удаленный порт самого сервера SSH;

(ssh user@sshserver -L<local_port>:<sshserver>:<remote_port>)
ssh user@192.168.1.1 -L8080:127.0.0.1:8090

В первом примере выполните:

telnet 127.0.0.1 8080

на клиентском компьютере подключит вас к 192.168.1.20 через порт 8090 (это сеть сервера SSH!)

Во втором примере порт 8080 будет привязан (создан) на компьютере 192.168.1.20 (это сеть сервера SSH!), И он связан с локальным портом 8080 клиента SSH. Итак, 192.168.1.20 вы можете:

telnet 127.0.0.1 8080

и вы будете перенаправлены на 8080 клиентского компьютера SSH.

Третий пример похож на первый, но удаленный компьютер - это сам SSH-сервер, так что если вы:

telnet 127.0.0.1 8080

с вашего клиентского компьютера, вы будете подключены к порту 8090 SSH-сервера.

...