LINUX.ORG.RU

Portable Tunneling Utility

 , , ,


0

2

Приветствую LOR!

Решая проблему удаленного доступа для коллег (и иногда для себя), я написал на Go небольшое приложение, позволяющее туннелировать
через любой SSH-сервер и выставлять «наружу» TCP-службы (RDP, VNC, HTTP и сам SSH) из закрытых (security...) корпоративный сетей.

Вот собственно оно: https://github.com/ivanilves/ptu
Надеюсь, кому пригодиться по работе, а может и конструктивную критику услышу. ;)

P.S.:
Выбрал Go, потому что просто кросс-компилировать просто и зависимостей у полученных исполняемых файлов нету.
Клиенты (80% на Windows) просто скачивают приложение. запускают и оно работает без настроек (в «tailored» mode).

поглядим, спасибо.

kep
()

А почему написал своё, а не взял готовое?

PS: открыл main.go, увидел goto не в 6ти вложенных циклах, закрыл код; боюсь таких людей

iu0v1
()

Это очень плохой и неоотестированный autossh на Go, с CI, красивыми картиночками, goto из цикла и комментариями на испанском? Пошел вон, хипстота срамная!

t184256 ★★★★★
()

Скучно живется? Хочется острых ощущений? Выложи свой код на лор.

BigAlex ★★★
()

Во-первых, задачу которую ты описал полностью решает ssh -R.

Во-вторых, таки да, совершенная квинтэссенция убогой go-хипстоты.

  • Самопальный сборочный скрипт, facepalm
  • Бинарники в репе, facepalm
  • Я так и не понял, это неизечимая болезнь go как такового, или просто на нём пишут только имбецилы, но неужели у вас хоть что-то в голове не шевельнулось когда вы писали go get? Никаких чексумм, по любому урлу вам приезжает совершенно произвольный код, начиная со сломанного API и заканчивания выставлением всей вашей корпоративной сети и локалхоста заодно, и не `remote professional'у` а тем кто действительно найдёт как с ними здорово повеселиться а ещё и бабла срубить.
slovazap ★★★★★
()
Ответ на: комментарий от slovazap

это неизечимая болезнь go как такового, или просто на нём пишут только имбецилы, но неужели у вас хоть что-то в голове не шевельнулось когда вы писали go get?

Это неизлечимая болезнь, и не только у go. Адепты JS и Ruby страдают тем же.

hateyoufeel ★★★★★
()
Ответ на: комментарий от iu0v1

Уважаемый iu0v1,
а что есть из готового, чтобы умело кросс-компилироваться, собираться в работающие из коробки, без всякой настройки юзером, бинарники? ;)

P.S.:
Согласен, за эти GOTO хвалить нельзя, но если отбросить абстрактное и безжизненное, догматическое применение best practices ко всему без разбору, то можно увидеть, что в данном контексте использование/неиспользование GOTO не играет важной роли ввиду малого размера проэкта. Разумеется при росте/развитие подобные конструкции стоит убирать первыми. Всему свое время.

CyberLynx
() автор топика
Ответ на: комментарий от slovazap

slovazap
Во-первых, боюсь ты невнимательно прочитал, эта утилита запускается на стороне пользователя. Который в 80% использует Windows и ssh -R запускать не умеет. Поэтому и нужны бинарники с «зашитыми» в них настройками. И в репе бинарники выложены, потому что не каждый хочет ПО компилировать.

Во-вторых, прошу, поделись со мной мудростью, покажи на чем сам пишешь, пожалуйста покажи свой не-хипстерский, хороший, православный код. Наверняка он сможет служить отличным примером и ударом по совести для любого нерадивого хипстера. ;)

CyberLynx
() автор топика
Ответ на: комментарий от CyberLynx

а что есть из готового, чтобы умело кросс-компилироваться, собираться в работающие из коробки, без всякой настройки юзером, бинарники?

Начиная с C/C++ и заканчивая Python. То есть почти все.

anonymous
()
Ответ на: комментарий от anonymous

Я интересовался готовыми решениями, а не названиями языков... ;)

CyberLynx
() автор топика
Ответ на: комментарий от CyberLynx

а что есть из готового, чтобы умело кросс-компилироваться, собираться в работающие из коробки, без всякой настройки юзером, бинарники? ;)

Форвардеры, через обвязки (на Go), сейчас плодят как прирожки на пирожковой фабрике. Уже выходит на одну линию с флейворками для веба и api-builder'ами. Если следить за каналом реддита, или каким-то толковым агрегатором - каждый третий новый пакет - подобный форвардер.

iu0v1
()
Ответ на: комментарий от iu0v1

Возможно ты прав. Я достаточно новый человек в Go и программировании, я мог упустить эту деталь.
В-любом случае надо с чего-то начинать. Добавлю тестов, почищу вредные конструкции (e.g. GOTO) и стану «одним из многих».
Спасибо за комментарии!

CyberLynx
() автор топика
Ответ на: комментарий от CyberLynx

Во-первых, боюсь ты невнимательно прочитал, эта утилита запускается на стороне пользователя. Который в 80% использует Windows и ssh -R запускать не умеет.

Под windows есть и ssh и варианты для секретарш типа putty. Оба куда удобнее и доступнее чем твой мусор.

Поэтому и нужны бинарники с «зашитыми» в них настройками.

Что ты «зашивать» собрался, чудо? Для туннеля нужно ровно 4 параметра: хост и порт входа, хост и порт выхода, ничего из этого ты не зашьёшь.

И в репе бинарники выложены, потому что не каждый хочет ПО компилировать.

О, интересно. А хочет, наверное, ставить git и скачивать им бинарники?

Во-вторых, прошу, поделись со мной мудростью, покажи на чем сам пишешь, пожалуйста покажи свой не-хипстерский, хороший, православный код.

Извини, зеленоват ты будешь меня на понт разводить. Читай код ssh.

Наверняка он сможет служить отличным примером и ударом по совести для любого нерадивого хипстера

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

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Браво, slovazap, мне очень понравился твой ответ, особенно понравилось

О, интересно. А хочет, наверное, ставить git и скачивать им бинарники?

Это «5»! Академик запамятовал, что GitHub через WWW тоже работает. ;)

Показать своего тебе нечего, a желчи и пустой надменности в тебе хоть отбавляй. LOL

CyberLynx
() автор топика
Ответ на: комментарий от CyberLynx

Это «5»! Академик запамятовал, что GitHub через WWW тоже работает. ;)

Через WWW работают прежде всего нормальные downloads куда и нужно заливать бинарники. Не в репозиторий, просто запомни это если не способен понять и осознать.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Молодца! Так и надо эту хипстоту. Я заметил, если язык golang, то автор обычно имбецил :)

anonymous
()
Ответ на: комментарий от CyberLynx

Это «5»! Академик запамятовал, что GitHub через WWW тоже работает. ;)

Из-за таких как ты интернет валится придурок!!!

anonymous
()
Ответ на: комментарий от anonymous

Так и надо эту хипстоту.

Из-за таких как ты интернет валится придурок!!!

И я вас тоже люблю!

CyberLynx
() автор топика

А откуда на винде берутся awk, grep и sed?

"netstat -nl | grep \"^tcp .*:%d \" | awk '{print $4}' | sed 's/:.*//'"
anonymous
()
Ответ на: комментарий от uuwaan

Этот комментарий удалил, чтобы не создавать нездоровых ассоциаций. ;)

CyberLynx
() автор топика
Ответ на: комментарий от anonymous

А эта комманда, уважаемый аноним, исполняется на сервере SSH, не на клиентской машине. Исполняется, чтобы проверить работу SSH Listener.
К сожалению, если опция GatewayPorts на сервере SSH не разрешена, то какой bind address ты бы не запрашивал, все-равно будешь слушать только 127.0.0.1 (security) и никакого сообщения об ошибке не выдается. Поэтому приходиться проверять bind address вручную и предупреждать, что опция GatewayPorts не разрешена. :(

CyberLynx
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.