Команда для переадресации порта 80 с локального компьютера ( localhost
) на удаленный хост через порт 8000:
ssh -R 8000:localhost:80 oli@remote-machine
Это требует дополнительной настройки на сервере SSH, добавьте строки в /etc/ssh/sshd_config
:
Match User oli
GatewayPorts yes
Затем перезагрузите конфигурацию выполнением сервера sudo reload ssh
.
Этот параметр GatewayPorts yes
заставляет SSH связывать порт 8000 с подстановочным адресом, поэтому он становится доступным для общего адреса remote-machine
( remote-machine:8000
).
Если вам нужна опция не привязывать все к подстановочному адресу, измените GatewayPorts yes
на GatewayPorts clientspecified
. Поскольку ssh
по умолчанию выполняется bind_address
привязка к адресу обратной петли, необходимо указать пустое значение для привязки подстановочного адреса:
ssh -R :8000:localhost:80 oli@remote-machine
Значение :
before 8000
является обязательным, если GatewayPorts
задано значение clientspecified
и вы хотите разрешить публичный доступ remote-machine:8000
.
Соответствующие ручные выдержки:
SSH (1)
-R [bind_address:] port: host: hostport
Указывает, что данный порт на удаленном (серверном) хосте должен быть перенаправлен на данный хост и порт на локальной стороне. Это работает путем выделения сокета для прослушивания порта на удаленной стороне, и всякий раз, когда устанавливается соединение с этим портом, соединение перенаправляется по безопасному каналу, и устанавливается соединение с хост-портом хоста с локальной машины. По умолчанию прослушивающий сокет на сервере будет связан только с интерфейсом обратной связи. Это можно переопределить, указав bind_address. Пустой адрес bind_address или адрес «*» указывает, что удаленный сокет должен прослушивать все интерфейсы. Задание удаленного bind_address будет успешным, только если включена опция GatewayPorts на сервере (см. Sshd_config (5)).
sshd_config (5)
GatewayPorts
Указывает, разрешено ли удаленным узлам подключаться к портам, перенаправленным для клиента. GatewayPorts можно использовать для указания того, что sshd должен позволять перенаправлениям удаленных портов связываться с адресами без обратной связи, что позволяет другим хостам подключаться. Аргументом может быть «нет», чтобы принудительно сделать переадресацию удаленных портов доступным только локальному узлу, «да» для принудительной переадресации удаленных портов на привязку к подстановочному адресу или «указание клиента», чтобы клиент мог выбрать адрес, по которому пересылка связана. По умолчанию «нет».
Смотрите также:
GatewayPorts
была волшебная пуля здесь. Мне нравится, что вы нашли версию, которая может позволить мне ограничить эту довольно мощную технику для определенных пользователей.ssh
команда. Он определяет, могут ли другие клиенты связываться с переадресованными портами на сервере.-R :8000:127.0.1.1:80
(или любой другой127.x.x.x
адрес). В противном случае нет, вы не сможете узнать удаленный IP-адрес.Если сервер имеет
GatewayPorts no
, вы можете достичь того же результата, выполнивssh -g -L 8001:localhost:8000 oli@remote-machine
на сервере, как только вы выполнилиssh -R
команду на клиенте. Это сделает петлевой порт 8000 на сервере доступным для всех интерфейсов на порте 8001.источник