Мені потрібно зворотне проксі-рішення для 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, пропускаючи між собою брандмауер. Якщо припустимо, що ваш апарат прослуховує порт 8080. Формат пересилання вперед - це прослуховування IP: локальний порт: віддалена адреса: віддалений порт. Звичайно, для одного сервера ви також можете використовувати

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

Зауважте, що параметр localhost в -L відносно сервера1. Іншими словами, сервер бачить з'єднання, що надходять від localhost, а насправді вони надходять з вашого комп'ютера через ssh-з'єднання.

Вам також потрібен параметр

AllowTcpForwarding yes

в ssh-налаштуваннях сервера (зазвичай / etc / ssh / sshd_config).

Після цього інші можуть підключитися до комп'ютера на порту 8080, щоб отримати з'єднання через Apache Reverse Proxy. Якщо вам потрібен загальний проксі (щоб користувачі могли обирати адресу, а не лише конкретні адреси в конфігурації Apache), вам слід встановити кальмар на server1 та використовувати ssh тунель для порту кальмарів.


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

Коли ви запускаєте ssh тунель, цей трафік (від порту 8080 до порту 8080) йде всередині ssh-з'єднання, використовуючи порт 22. Брандмауер бачить трафік до порту 22, а не 8080.
Оллі,

Коли ви даєте цю команду, ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1 я хочу знати, що можна поставити як віддалений_сервер_адрес: це IP внутрішня машина, для якої я хочу використовувати сервер1 як проміжний. Я правильно це зрозумів?
Бонд

Бонд: так, це правильно. Ви також можете вказати кілька -L тунелів (звичайно, з різними портами джерела), щоб відкрити з'єднання з декількома внутрішніми машинами. Наприклад "-L0.0.0.0: 8080: remote_server1: 80 -L0.0.0.0: 8081: remote_server2: 80 -L0.0.0.0: 8082: remote_server2: 22" (без лапок).
Оллі

Якщо зробити це твердим, потрібно буде встановити сервер, який виконує функцію відскоку за межами центру обробки даних і дозволяє дозволити трафік. Звичайно, тунель ssh добре, як тимчасове рішення, але для чогось у виробництві я б порадив встановити реальний зворотний проксі на відскоку та адаптуйте налаштування брандмауера, щоб дозволити 8080 з'єднань лише від цього відскоку. З цього приводу, розумніше розміщувати зворотний проксі як одну з віртуальних машин всередині постійного струму. Таким чином, що з'єднання потрібно забезпечити SSL лише до цієї машини.
jmary

0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.