Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> немного о ssh

проброска портов с помощью ssh

Автор: lissyara.


    Предистория: Два часа в серверной, пока подымали пару серваков после отключения электричества, не прошли даром - прихватил радикулит. Слёг дома, но работать надо - как раз внедрение очередного филиала, там пара ручных операций, которые никак не задокументирую, ну и прочее по мелочи. На работе сетевик выдал логин/пароль/IP - и сказал - обычный pptp.
   Мне бы его уверенность - я второй день трясу бубном/ppp/mpd/tcpdump/wireshark - толку ноль. Странные туннели делает циско - хотя винда коннектится влёт. Посему, уже через полчаса попросил прокинуть ssh снаружи на любую машину сети.
   Дальше было интересней. ssh - это просто волшебно - но кроме никсовых серваков, гораздо реже, но требовалось заходить на виндовые. Опять же - хотелось добраться до своего рабочего компа с KDE - там почта и прочие полезные фенечки.
   Шеф, подсказал одну строчку, которую уже полгода пытался заставить меня вычитать в мане - строчка могла пробросить порт с удалённой машины на локальную. Причём с любой машины в удалённой сети, а не только с той, куда у меня ssh. Ну, а дальше было дело техники.
   Лирическое отступление. У меня дома два компа (ну, три - третий ноут) - все, в т.ч. и ноут, под FreeBSD. Первый комп это - пережиток тёмного виндового прошлого, третий пенёк - это гейт между моим десктопом (когда-то он был под виндой) и локалкой. По совместительству он же файлопомойка для меня, тестовая машина и кое какие ресурсы для локальной сети района. Комп этот, я запихал в вентиляционную шахту, забил дощечкой, и последний раз видел в начале лета - чистил вентиляторы. Выключается/перезагружается он тока когда вырубают электричество. Второй комп - собственно десктоп, соединён с первым кроссовером.
   Итак. Задача - чтобы не мучаться каждый день с пробросом нужных портов, надо пробросить нужные сервисы на первый комп, на непривелигированные порты, и там их юзать. Цели ясны, задачи определены - за работу, товарищщи!
   Пункт первый - нужен RDP на контроллер домена. Т.к. ssh сессию через которую проброшены порты не закроешь, не разорвав TCP соединения на проброшенный порт, делать это, зайдя по ssh на первую машину - не имело смысла. Был придуман обходной манёвр - т.к. я не юзаю screen (может и зря - но мне не удобно...), я использовал физические консоли сервера - через watch.
   Для начала, надо подготовить машину находящуюся на работе - на которую у меня есть ssh. Добавляем одну опцию, и рестартуем sshd:
radius$ more /etc/ssh/sshd_config | grep TcpFor | tail -1
AllowTcpForwarding yes
radius$ /etc/rc.d/sshd restart
Stopping sshd.
Starting sshd.
radius$

   Итак, лезем на мою первую машину по ssh, там от рута лезем на физическую консоль:
lissyara$ watch -W ttyv6

   Я залез на шестую (седьмую), вы можете на любую свободную (на пяти предыдущих у меня dvd в avi пережимается :)). Там логимся рутом, и запускаем такую команду:
$ ssh lissyara@111.222.111.222 -L 192.168.254.254:3390:172.172.172.172:3389

   Разъяснения:

  • 111.222.111.222 внешний IP адрес на который открыт ssh (реально - ssh на внутренней машине, просто проброшен порт, ну да не суть важно - операция прекрасно прокатит на гейте с двумя сетевухами)
  • 192.168.254.254 - это внутренний адрес моего рутера, который гейт между мной и локалкой.
  • 3390 - порт, на который я буду коннектится - почему-то не получилось пробросить на тот же номер порта.
  • 172.172.172.172 - IP контроллера домена внутри локальной сети.
  • 3389 - порт на контроллере домена на котором висит rdesktop
       После логина, жмём Gtrl+G c целью отвалиться от реальной консоли обратно, в исходную сессию ssh. Можно проверить, не отпало ли чего:
    lissyara$ w | grep v6
    

       Можно коннектится по RDP на 192.168.254.254:3390 - попадём на 172.172.172.172:3389. Таким же макаром пробросил локальный jabber и почту.

       Дальше было интересней. Несмотря на то, что я затащил все необходимые сервисы к себе на домашнюю машину, остался чисто теоретический интерес по заходу на свой рабочий десктоп. Может даже немного практический - мало ли что может резко понадобиться, что непробросишь.
       В KDE есть приблуда, типа "Удалённого помошника" в винде, тока более грамотно организованная.


       Когда-то я с ней развлекался - помню что работало, значит оставалась одна проблема - как её запустить минуя ГУИ. Гугление дало первую или вторую ссылку по теме, где и было описано что надо сделать (на источник не ссылаюсь - непомню, а снова искать - лень. Тем более - не копирую а своими словами передаю).
       Проблема номер один - комп ребутался, поэтому я там не залогинен - висит окно KDM. Итак, лезем на машину по ssh, и для начала его килляем:
    lissyara$ killall -9 kdm-bin
    

    и рихтуем один файлик до такого состояния:
    lissyara$ more .kde/share/config/krfbrc
    allowDesktopControl=true
    allowUninvited=true
    confirmUninvitedConnection=false
    disableBackground=false
    disableXShm=false
    enableSLP=true
    preferredPort=-1
    uninvitedPasswordCrypted=
    
    [invitations]
    invitation_num=0
    lissyara$
    

    после чего, рихтуем ещё такой файл:
    lissyara$ more /usr/home/lissyara/.xinitrc
    exec /usr/local/bin/startkde
    lissyara$
    

    и запускаю КДЕ от своей учётки:
    lissyara$ startx &; exit
    

       Логичный вопрос - зачем сразу сделал "exit"? А вы не делайте - поймёте :) Снова логинимся по ssh на машину, проверяем - запустилось ли kde, и открыты ли нужные порты:
    lissyara$ sockstat | grep kdeinit | grep tcp
    lissyara kdeinit    77507 13 tcp46  *:5800                *:*
    lissyara kdeinit    77507 14 tcp46  *:5900                *:*
    lissyara$
    

       После чего пробрасываем 5900 порт, на 5901, к примеру. Запускаем krdc (из меню K, или с консоли), и выбираем такие параметры:


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

    P.S. Надо всё же оcилить маны по ssh/sshd.
    P.S.2 Чё то я стал скриншотиками увлекаться... Старею чтоли?



    размещено: 2007-09-26,
    последнее обновление: 2007-09-26,
    автор: lissyara


    pevg, 2007-09-27 в 17:02:18

    Используется VNC протокол, поэтому туда же можно еще VNC клиентом ходить, даже из виндов (из под другого пользователя и пароль не запрашивается…).
    Только очень напрягает, когда при наборе команды на удаленной консоли, буквы дублируются. Или может что не так делаю...
    krdesktop клиентом по протоколу RDP ходить на виндовую машину куда приятнее.
    Подскажите, пожалуйста, куда копать, если можно ещё что-то использовать.

    freeman_tnu, 2007-09-27 в 18:16:02

    pevg
    nomachine.com - весьма удобно

    TOUGHCAT, 2007-09-28 в 10:15:33

    хмм... так вот от чего этот порт 5900... думал - чего там ищут

    Little_Jon, 2007-09-28 в 22:44:16

    Алексей, пробросить X на свою машину проще простого, запусти, ssh -X бла бла бла, ну а дальше startkde или что там у тебя, Если хочешь увидеть тоже в виндах путти + XMind тебе в помощь :).
    Главное выздоравливай, здоровье это важно.

    Little_Jon, 2007-09-28 в 23:01:45

    Добавочка, startkde, можно запускать только если на локальной машине TVM и более ничего, никаких оконых менеджеров. Иначе будет KDE в KDE что не есть гуд. В начале можно что нибудь попроще, konqueror например. Винды startKDE переживают нормально :)

    Anton, 2007-10-05 в 22:31:33

    мне кажется намного проще поднять vpn сервер, и жить спокойно.

    Vadim, 2007-10-10 в 7:22:55

    А зачем вообще такие мучения?!
    > cd /usr/ports/net/vnc
    На рабочей машине у меня КДЕ, но юзать его по сети некомфортно, тормозит. А у vnc свой собственный xinitrc, так что я, когда удалённо, использую icewm. Ещё плюс - сессия не теряется при дисконнекте. Соединяешься ещё раз, и продолжаешь с того же самого места, где прервался.

    pevg, 2008-01-12 в 14:09:43

    Спасибо Vadim
    Советую /usr/ports/net/vnc или /usr/ports/net/tightvnc
    У tightvnc есть свой xstartup в котором настроить загрузку хоть kde, хоть icewm (удалив при этом twm). При установке можно ввести пароль на разные уровни доступа. Сессия не теряется при дисконнекте и работается комфортно.

    P.S. to lissyara - кстати, в настройках доступа Desktop sharing есть возможность установить пароль доступа.

    P.P.S. надо будет nomachine попробовать

    Alex27, 2008-03-29 в 21:46:28

    Кстати... А нельзя доступ к виндовым машинам через фришный шлюз организовать простым редиректом порта с помощью natd?

    redirect_port tcp 111,111,111,111:3389 3389

    где 111,111,111,111 - адрес внутренней виндовой машины.
    Если это DC, - с него можно дальше этим же RDC ходить на любые другие виндовые машины.

    Jabax, 2008-04-08 в 12:25:09

    ssh -f -N -p 10000 root@111.111.111.111 -L 192.168.1.5:3120:111.111.111.111:3120

    Так можно пробрасывать туннель в бэкграундном режиме не переключаясь в физ консоль.  
    Здесь 111.111.111.111  - адрес удалённой тачки, 192.168.1.5 - локальной машины.

    -p 10000 пробрасывает через 10000 порт на удалённой машине (его надо вначале открыть в shhd_config) чтоб не забивать дефолтный порт

    sash, 2008-05-27 в 16:03:05

    я сам на работе сижу за прокси который много чего запрещает, да и pop3 через него не прогонишь. Сначала юзал putty который поднимал локальный socks и пробрасывал нужные порты. неудобно то, что она не умеет сворачиваться в трею. Нашёл выход - bitvise tunneler (http://www.bitvise.com/tunnelier) ssh клиент - поддерживает соединение и в трее висит оч. удобно рекомендую. для домашнего использования бесплатный.

    USER, 2010-11-19 в 9:32:37


    Есть PC1 (ЗА НАТОМ),  PC2  и SERVER с демоном sshd. Подскажите , каким образом с PC2 попасть на PC1(remote desctope) использую SERVER  как промежуточный ? WINDOWS



  •  

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.1595 секунд
    Из них PHP: 46%; SQL: 54%; Число SQL-запросов: 79 шт.
    Исходный размер: 38953; Сжатая: 10477