Для создания 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''.
Объясните эту команду или схематически изобразите ее.
Это - просто способ применить хорошо протестированную безопасность к небезопасному протоколу VNC. SSH широко используется, он хорошо протестировал протоколы шифрования, и он поддерживает множество протоколов аутентификации. VNC просто широко используется, и не целый SSH.
опция L SSH передает трафик от локальной системы до удаленной системы при защите SSH. Так, где VNC не безопасен или достаточно гибок отдельно путем передавания трафика VNC по SSH, Вы получаете полную мощность SSH для защиты его.
Путем передачи порта localhost удаленному хосту, Вы удостоверяетесь, что ни один из Вашего незашифрованного трафика VNC не пропущен на локальном (или удаленный, в этом отношении) сети. Для прерывания любого из этого взломщик должен будет повредить SSH или иметь корневой доступ к включенным системам, в этом случае Вы уже проиграли.
В основном это делает порт 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 - номер порта, целевой порт должен быть достижимым на
Я нахожу это запутанным из-за использования «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 на локальном клиентском компьютере.
Надеюсь, это поможет
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