Если я неправильно понял, что вам нужно сделать, довольно просто добиться того, чего вы хотите, если вы управляете B и можете настроить демон SSH на B для прослушивания через порт 443 вместо стандартного порта 22 и установить любое программное обеспечение брандмауэра на B разрешить входящее соединение с портом 443, если трафику на порт 443 разрешен исходящий из сети, которую вы используете.
Если B - система Linux, для прослушивания порта 443 на наличие SSH-соединений, вероятно, потребуется незначительное обновление /etc/ssh/sshd_config
. Посмотрите на строку ниже в файле:
#Port 22
Удалите «#», который означает, что последующее будет рассматриваться как комментарий в начале строки. Измените "22" на "443", а затем перезапустите демон SSH.
В клиентской системе вы используете опцию -L
для SSH, которая приводит к локальным соединениям, то есть к системе, из которой вы инициируете соединения SSH, перенаправляясь на порт в какой-либо другой системе с сервера SSH, к которому вы подключаетесь. подключения.
-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 con‐
nection 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 spec‐
ified 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. How‐
ever, 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.
Например, вы можете использовать команду, подобную приведенной ниже, для подключения к порту 443 через SSH на компьютере B и переадресации трафика на порт 2222 в локальной системе на порт 22 на A через порт 443 на B.
ssh -p 443 -L 2222:1.2.3.4:22 myBacct@5.6.7.8
-p
означает "порт" и сообщает SSH, что вам необходимо подключиться к системе назначения, то есть B на 5.6.7.8 на порту 443, а не на стандартном порту 443. -L
указывает SSH создать локальный прослушивающий порт в системе, с которой вы устанавливаете соединение. Я поставил "2222" в командной строке, но число произвольно; просто поместите что-то больше, чем 1 024 и меньше, чем 65 536. -L 2222:1.2.3.4:22
также дает команду программе SSH в системе, из которой вы устанавливаете соединение SSH с B, перенаправлять любой трафик, который он получает через порт 2222, через туннель SSH, который он установил с B. И когда он покидает другой конец туннеля, B отправляет его на A на 1.2.3.4 через порт 22. Таким образом, с точки зрения A, SSH-подключение к нему происходит из B.
Затем в системе, из которой вы устанавливаете соединение, вам нужно инициировать другое соединение SSH, но на этот раз на порт 2222. Вы можете сделать это следующим образом:
ssh -p 2222 myAacct@127.0.0.1
Теперь ваша система подключается к нестандартному порту 2222 по адресу localhost для себя, то есть 127.0.0.1. Первое установленное вами соединение SSH имеет клиентское программное обеспечение SSH, прослушивающее порт 2222 для соединений и затем перенаправляющее трафик через туннель SSH на порт 443 на B, где оно затем отправляется далее на порт 22 на A. Когда вы инициируете соединение, пароль запрос вы получите, если вы используете пароль аутентификации, будет для машины А.
Брандмауэр в сети, из которой вы исходите, первое SSH-соединение видит только исходящее соединение с портом 443 на B. Но в соединении с портом 443 на B есть зашифрованный туннель, который перенаправляет весь трафик на порт 2222 вашего SSH-клиента порт 22 на А.
Я использую аналогичный подход для передачи файлов на / с сервера SSH, A, который находится в ограниченной сетевой зоне, где единственное разрешенное входящее соединение SSH должно проходить через хост-бастион B. Примечание: если вам также необходимо выполнить передачу файлов используя безопасное копирование (SCP), вам нужно использовать прописную букву "P" с SCP для указания порта, тогда как с ssh вы должны использовать строчную букву "p".
Если вы не используете систему Linux или OS X в качестве клиентской системы SSH, вы можете использовать аналогичный подход переадресации портов с PuTTY или другим клиентским программным обеспечением SSH.