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

10

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

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

облигация
источник
1
Связанный с этим вопрос с другим отличным решением: serverfault.com/questions/361794/...
Кай
SSH Reverse Proxy github.com/tg123/sshpiper
farmer1992
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-туннель через брандмауэры, вам даже не нужно открывать порты.

Belug
источник