Вопрос перенаправление портов на linux без root или ssh


Мне было интересно, можно ли перенаправить порт без root или ssh.

В настоящее время я

ssh -L 20080:othermachine:80 localhost

Использование ssh может дать вам определенные преимущества, такие как создание зашифрованных туннелей и т. Д. В приведенном выше примере я не делаю этого, поэтому использование ssh кажется излишним накладным. Есть ли более простой способ сделать это?

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


4
2017-10-03 08:53


происхождения


Для этого примера вам не нужен root. - Arjan
Думаю, мне следовало бы уточнить, что у меня не было особых проблем. Более того, хотя это сработало, я думал, что должны быть другие решения, которые могут быть лучше. (Что касается корневой части, я мог бы использовать переадресацию портов с помощью iptables, но для этого требовалось бы root.) - BlackShift


ответы:


я также предпочел бы ssh BECAUSE шифрования, но 'Сокат«должен отлично работать и для вас.


8
2017-10-03 09:04



Благодаря! никогда не слышал о socat, эта программа может делать гораздо больше, чем я когда-либо надеялся. Я уверен, что я найду для этого больше возможностей, чем просто переадресацию портов. - BlackShift


Ты спрашиваешь: Is there an easier way to do this?  Простым ответом будет «нет». SSH делает все, что вам нужно, и это хорошо используемая, хорошо знакомая, очень эффективная программа с (я бы себе) очень мало ошибок, она доступна на каждой платформе, которую вы можете себе представить, и она безопасна для загрузки. Вы не утверждаете, что производительность является проблемой, поэтому я не вижу причины, почему бы не использовать SSH лично.

Если вы хотите перенаправить локальный порт в порт на другом компьютере, вам потребуется что-то, что будет проверяться на этом удаленном хосте. Это SSH. Если вы хотите общаться только с локальными портами, то, как уже упоминалось, socat может быть именно то, что вы ищете.


3
2017-10-03 14:35



Не было особых причин не использовать ssh в это время, но я хотел расширить свою коллекцию инструментов, и socat кажется очень мощным. (акира первым предложила его, поэтому я проверил его ответ.) - BlackShift
Кстати, три причины, когда ssh не оптимальны: 1) он недоступен (например, на моем телефоне, но я сомневаюсь, что смогу установить там socat), 2) no sshd, или в моем случае ограниченное количество разрешенных логинов, 3) нет учетной записи на удаленном компьютере (так что зашифрованный / сжатый туннель невозможен) - BlackShift
Другим случаем, когда ssh не является оптимальным, является то, что вы перемещаете большое количество данных и имеете ограниченную вычислительную мощность. В этом случае загрузка процессора, налагаемая шифрованием ssh, велика и замедляет передачу. Тем не менее, это не означает, что вы можете игнорировать безопасность ради производительности, однако в некоторых случаях уровень безопасности не нужен (например, вы обмениваетесь конфиденциальной сетью) - wojtow


Если то, что вы делаете, работает, и вы не видите проблем с производительностью, я ничего не изменил бы. Если вы не переносите большие объемы данных, это не должно сильно повлиять. И если вы, ssh может сжать данные, вам все равно может быть лучше.

Единственная проблема может заключаться в задержке. Похоже, вы туннелируете трафик http, поэтому он должен быть незначительным.


1
2017-10-03 13:48



(Из man ssh: Сжатие желательно на модемных линиях и других медленных соединениях, но только замедляет работу на быстрых сетях.) - Arjan
Я это видел, но не совсем согласен. Это зависит от скорости сети, скорости сети и количества перемещаемых данных. У меня был хороший опыт использования его для больших (нескольких гигабайт) объемов данных по сетям GigE с использованием быстрых серверов. - KeithB


Просто быстрая заметка, похоже, что ncat, который поставляется с новым nmap 5, может делать похожие вещи, такие как socat: http://nmap.org/ncat/


1
2017-11-30 15:55





Какой бы инструмент вы ни использовали: когда вы не используете Windows, вы будете всегда (а также только) необходимо использовать привилегии суперпользователя при использовании привилегированных портов («хорошо известных портов»). Итак: при использовании портов до 1023 включительно.


0
2017-10-03 14:03



пересылка на низкий порт (который уже прослушивается) не требует привилегий суперпользователя, только для принимающего порта (который в моем примере был 10080). - BlackShift