Что делает опцию L SSH, делают?

Для создания VNC безопасным я, как предполагается, использую это

ssh -L 5901:127.0.0.1:5901 user@example.com

от клиента. Используйте 5901, если дисплей сервера равняется 1; используйте 5900 для дисплея 0. Это управление было принято из учебного руководства.

Описание опции

-L [bind_address:]port:host:hostport

             Specifies that the given port on the local (client) host is to be
             forwarded to the given host and port on the remote side.  This
             works by allocating a socket to listen to port on the local side,
             optionally bound to the specified bind_address.  Whenever a
             connection is made to this port, the connection is forwarded over
             the secure channel, and a connection is made to host port
             hostport from the remote machine.  Port forwardings can also be
             specified in the configuration file.  IPv6 addresses can be
             specified with an alternative syntax:
             [bind_address/]port/host/hostport or by enclosing the address in
             square brackets.  Only the superuser can forward privileged
             ports.  By default, the local port is bound in accordance with
             the GatewayPorts setting.  However, an explicit bind_address may
             be used to bind the connection to a specific address.  The
             bind_address of “localhost” indicates that the listening port be
             bound for local use only, while an empty address or ‘*’ indicates
             that the port should be available from all interfaces.

ssh_config описание файлов включает это

GatewayPorts
         Specifies whether remote hosts are allowed to connect to local
         forwarded ports.  By default, ssh(1) binds local port forwardings
         to the loopback address.  This prevents other remote hosts from
         connecting to forwarded ports.  GatewayPorts can be used to spec-
         ify that ssh should bind local port forwardings to the wildcard
         address, thus allowing remote hosts to connect to forwarded
         ports.  The argument must be ``yes'' or ``no''.  The default is
         ``no''.

Объясните эту команду или схематически изобразите ее.

2
задан 9 February 2017 в 18:18

4 ответа

Это - просто способ применить хорошо протестированную безопасность к небезопасному протоколу VNC. SSH широко используется, он хорошо протестировал протоколы шифрования, и он поддерживает множество протоколов аутентификации. VNC просто широко используется, и не целый SSH.

опция L SSH передает трафик от локальной системы до удаленной системы при защите SSH. Так, где VNC не безопасен или достаточно гибок отдельно путем передавания трафика VNC по SSH, Вы получаете полную мощность SSH для защиты его.

Путем передачи порта localhost удаленному хосту, Вы удостоверяетесь, что ни один из Вашего незашифрованного трафика VNC не пропущен на локальном (или удаленный, в этом отношении) сети. Для прерывания любого из этого взломщик должен будет повредить SSH или иметь корневой доступ к включенным системам, в этом случае Вы уже проиграли.

1
ответ дан 2 December 2019 в 02:48

В основном это делает порт 5902 на example.com доступным, поскольку он работал на Вашей локальной машине

ssh -L 5901:127.0.0.1:5902 user@example.com

После выполнения этой команды, можно получить доступ к тому, что работает на примере com:5902 на локальной машине 127.0.0.1:5901

user@example.com - пользователь/сервер, которого Вы подключаете с

5902 - целевой порт, который Вы хотите вперед

5901 - номер порта, целевой порт должен быть достижимым на

1
ответ дан 2 December 2019 в 02:48

Я нахожу это запутанным из-за использования «localhost» во многих примерах.

LocalPort: RemoteHost: пользователь RemotePort @ IntermediateHost

LocalPort: это локальный порт, который SSH открывает на компьютере, на котором выполняется команда ssh. Обычно вы настраиваете свой клиентский компьютер для подключения к localhost: 5901 - на своем клиентском компьютере.

RemoteHost. Это целевой компьютер, к которому делается попытка подключения - с компьютера IntermediateHost. То есть это относительно RemoteHost. Когда вы используете здесь «localhost», это означает «IntermediateHost».

RemotePort: это целевой порт на целевой машине

IntermediateHost: это прослушивание компьютера (по умолчанию на SSH-порту 22), к которому подключается команда ssh. Именно эта машина пытается подключиться к RemoteHost: RemoteHost.

В часто цитируемом примере защищенного туннеля VNC / SSH:

ssh -L 5901:localhost:5900 myuser@IntermediateHost

«Локальный хост» здесь относится к IntermediateHost, то есть это IS IntermediateHost.

Локальный порт 5901 открыт, поэтому вы можете настроить локальный клиент VNC для подключения к порту 5901 на локальном компьютере. Это сбивает с толку: «localhost: 5901».

В параметре «localhost: 5900» является целью, к которой подключается IntermediateHost: поэтому он подключается к себе.

Следовательно, ssh-сервер, работающий на IntermediateHost, получает указание отправить весь трафик на «localhost: 5900», т.е. на себя. Трафик поступает с того, что отправляется на порт 5901 на локальном клиентском компьютере.

Надеюсь, это поможет

0
ответ дан 2 December 2019 в 02:48

SSH обычно обеспечивает удаленную оболочку, доступную надежно на локальном терминале. Команда с -L опция, кажется, предлагает возможность безопасного туннеля портам в двух концах.

Предположим, что команда

ssh -L 5901:127.0.0.1:5901 user@remoteIP

В вышеупомянутой опции существует два экземпляра 5901.

В вышеупомянутой опции первая инстанция 5901 определяет конфигурацию на машине, которая является ЛОКАЛЬНЫМ ХОСТОМ, который не должен говорить "localhost". ЛОКАЛЬНЫЙ ХОСТ является машиной, выполняющейся ssh команда. В вышеупомянутой опции остаток от строки, 127.0.0.1:5901, определяет конфигурацию на машине, которая является УДАЛЕННЫМ ХОСТОМ в remoteIP.

Приложение на УДАЛЕННОМ ХОСТЕ может получить доступ к безопасному туннелю через 127.0.0.1:5901, где эти 127.0.0.1 являются явными, поэтому только приложению на той же машине позволят получить доступ к туннелю.

Приложение на ЛОКАЛЬНОМ ХОСТЕ может получить доступ к безопасному туннелю через 127.0.0.1:5901, где эти 127.0.0.1 по умолчанию. Если GatewayPorts - 'да' затем a * может быть указан в опции означать, что любой хост (с любым IP) может получить доступ к безопасному туннелю. Форма команды затем была бы

ssh -L *:5901:127.0.0.1:5901 user@remoteIP

Иллюстрация с 4 хостами:

App Host A <---> Host Running `ssh` <---> Host At `remoteIP` <---> App Host B

Хост приложений A мог быть на той же машине как Выполнение Хоста ssh.

Хост приложений B мог быть на той же машине как Хост в remoteIP.

Приложение 0: Обратите внимание, что эта команда заставляет его появиться, что порт 5901 используется, но на самом деле туннель является заменой для порта 5901 на обоих концах. Таким образом можно отключить порт 5901. На самом деле, если никакие другие не необходимы, можно отключить все порты кроме того, используемого ssh который равняется условно 22.

Приложение 1: В последнее время я заметил это при выдаче команды ssh -L 5901:127.0.0.1:5901 user@remoteIP где УДАЛЕННЫЙ ХОСТ /etc/ssh/sshd_config имеет нет GatewayPorts значение, ЛОКАЛЬНЫЙ ХОСТ сообщает о следующей ошибке: "свяжите: не Может присвоить требуемый адрес". Туннель работает даже при том, что ошибка была сгенерирована. Когда GatewayPorts не имеет никакого значения, к которому это принимает значение по умолчанию no. Это казалось бы значением no более безопасно, таким образом, я хочу сохранить это тем путем. Сообщение об ошибке является тем, которое я не могу объяснить. Я теперь даю следующую команду, которая старается не генерировать сообщение об ошибке. ssh -L 127.0.0.1:5901:127.0.0.1:5901 user@remoteIP

1
ответ дан 2 December 2019 в 02:48

Другие вопросы по тегам:

Похожие вопросы: