Мне нужно решение обратного прокси для SSH


10

Привет вот ситуация у меня есть сервер в корпоративном центре обработки данных для проекта. У меня есть SSH-доступ к этой машине через порт 22. На этом сервере запущено несколько виртуальных машин, а затем в основе всех других операционных систем работают. Теперь, так как я нахожусь за брандмауэром центров обработки данных, мой руководитель спросил меня, могу ли я сделать что-то, с помощью чего я могу дать многим людям доступ в Интернет к этим виртуальным машинам напрямую. Я знаю, если мне было разрешено получать трафик на порт, отличный от 22, тогда я могу сделать переадресацию портов. Но так как я не позволил это, так что может быть решением в этом случае. Люди, которые хотели бы подключиться, могут быть полными идиотами. Кто может быть счастлив, просто открыв замазку на своих машинах, или даже filezilla.

У меня нет брандмауэра в моих руках или какой-либо другой порт, кроме 22 открытых, и фактически даже если я запрашиваю, они не позволяют открыть. 2 раза SSH - это не то, что хочет мой руководитель.


1
Связанный с этим вопрос с другим отличным решением: serverfault.com/questions/361794/...
— Кай


sshpiperd прекрасно работает!
— Király István

Ответы:


5

Вы должны открыть ssh туннель с вашего компьютера на сервер в центре обработки данных. Давайте назовем это как «server1». Если вы используете openssh, вы можете просто запустить

ssh -L0.0.0.0:8080:localhost:8080 you_username@server1

Это откроет соединение вашего компьютера через порт 8080 с сервером, порт 8080, пропустив межсетевой экран между ними. Предполагая, что ваш apache прослушивает порт 8080. Формат переадресации портов прослушивает IP: локальный порт: удаленный адрес: удаленный порт. Конечно, для одного сервера вы можете использовать также

ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1

Обратите внимание, что параметр localhost в параметре -L относится к server1. Другими словами, сервер видит соединения, идущие от localhost, хотя на самом деле они приходят с вашего компьютера через ssh-соединение.

Вам также нужен параметр

AllowTcpForwarding yes

в конфигурации ssh сервера (обычно это / etc / ssh / sshd_config).

После этого другие могут подключиться к вашему компьютеру через порт 8080, чтобы получить соединение через обратный прокси-сервер Apache. Если вам нужен общий прокси (чтобы пользователи могли выбирать адрес, а не только конкретные адреса в конфигурации Apache), вам следует установить squid на server1 и использовать туннель ssh для порта squid.


Вы хотите сказать, когда я это сделаю, ssh -L0.0.0.0:8080:localhost:8080 you_username@server1 если соединение все равно будет проходить через порт 22 брандмауэра (потому что если этого не произойдет, я ничего не смогу сделать), и между локальной и удаленной машинами будет установлен туннель ssh. на указанных портах, но весь трафик будет поступать (порт 22) через брандмауэр.
— Бонд

Когда вы запускаете ssh туннель, этот трафик (от порта 8080 до порта 8080) идет внутри соединения ssh, используя порт 22. Брандмауэр видит трафик на порт 22, а не 8080.
— Olli

Когда вы даете эту команду, ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1 я хочу знать, что можно указать как remote_server_address, это то, что IP-адрес внутренней машины, к которой я хочу использовать server1 в качестве промежуточного. Я правильно понял?
— Бонд

Бонд: да, это правильно. Вы также можете указать несколько туннелей -L (с разными портами источника, конечно), чтобы открывать соединения с несколькими внутренними машинами. Например, "-L0.0.0.0: 8080: удаленный_сервер1: 80 -L0.0.0.0: 8081: удаленный_сервер2: 80 -L0.0.0.0: 8082: удаленный_сервер2: 22" (без кавычек).
— Олли

Создание такого твердого тела потребовало бы установки сервера, действующего как отскок за пределы центра обработки данных и позволяющего пропускать трафик. Конечно, туннель ssh подходит как временное решение, но для чего-то в производстве я бы посоветовал установить реальный обратный прокси на отскок и измените настройки брандмауэра, чтобы разрешить 8080 подключений только от этого отскока. Тем не менее, разумнее разместить обратный прокси-сервер в качестве одной из виртуальных машин внутри контроллера домена. Так что соединение должно быть защищено с помощью SSL только к этой машине.
— Джмари

0

Может быть, вы могли бы использовать что-то вроде SshMeIn . Это веб-система с открытым исходным кодом, которая будет создавать ssh-туннель через брандмауэры, вам даже не нужно открывать порты.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.