Портал информационной и технической поддержки ПО образовательных учреждений РФ

SPO HELP
  • Новости
  • Продукты
  • Поддержка
  • Учебный центр
  • Документация
  • Сообщество
  • Форумы
       
  • Вход
  • Регистрация

Форумы → Свободное Программное Обеспечение → Помощь через reverse ssh?
Последние записи

Помощь через reverse ssh?

Подписаться на Помощь через reverse ssh? Сообщений: 14, участников: 5 Теги: удаленная помощь ssh коневодство

  • Участвуют:
  • testuser
  • Михаил Цалевич
  • Julia Dronova (administrator)
  • yaleks
  • Papa Sasha
Ответить


23 февраля 2010, 18:38
Icon_missing_medium_medium testuser Записей: 990

Несколько раз здесь пробегали реплики типа "в данной ситуации сильно помог бы reverse ssh".

Набросал пример соответствующего скрипта. Работает в моих частных случаях. При копировании сюда могло покорежить (значки ',`,>,< и т.д., если кто подскажет, как прицепить файл "as is" -- прицеплю).

Для потенциальных "удаленных помощников" комментарии не требуются.

P.S.:  на google: http://sites.google.com/site/strgko/reverse_ssh...

#---------------------------------------

#!/bin/sh

assistant_username=`whoami`
assistant_ip= #our IP

if test "x$assistant_ip" = "x" ; then
        echo "Надо вписать свой внешний IP в скрипт: assistant_ip=..."
        exit 1
fi

mkdir -p ~/.ssh
echo "Вычисляем ключи RSA ... "
ssh-keygen -t rsa -f ~/.ssh/id_rsa.ass -N '' -q
echo "Добавляем ~/.ssh/id_rsa.ass.pub к ~/.ssh/authorized_keys ..."
cat ~/.ssh/id_rsa.ass.pub >> ~/.ssh/authorized_keys
echo -n  "Записываем скрипт для удаленной машины  ... "
( echo '#!/bin/sh' 
  cat ~/.ssh/id_rsa.ass | sed 's,^,#%#,'
  echo
  cat <<EOF

assistant_username=${assistant_username}
assistant_ip=${assistant_ip}

local_username=\`whoami\`
local_hostname=\`hostname\`

local_uid=\`id -u\`

this_script=\$0
if test "x\`echo \$this_script | sed 's,^/,,'\`" = "x\$this_script" ; then
this_script=\`pwd\`/\${this_script}
fi
in_wheel=no
if test "x\$local_uid" = "x0" ; then
echo "Вы root. Продолжаем."
else
local_groups=\`id -G\`
local_wheel_gid=\`sed '/^wheel:/!d;s/^wheel:[^:]*:\([0-9]\+\):.*\$/\1/;' < /etc/group\`
if test "x\$local_wheel_gid" = "x" ; then echo "Опаньки. В /etc/group нет группы wheel" else for g in \$local_groups ; do if test "x\$g" = "x\$local_wheel_gid" ; then echo "Уже неплохо. Вы в группе wheel" in_wheel=yes break fi done fi if test "x\$in_wheel" = "xyes" ; then echo "Перезапускаем скрипт от root: su -l -c \${this_script} " exec su -l -c \${this_script} else echo "Вы не в группе wheel. Пробуем перезапустить скрипт через sudo ... " _sudo_=\`which sudo 2>/dev/null\` if test "x\$_sudo_" != "x" ; then if test -x \${_sudo_} ; then if ! \${_sudo_} \${this_script} ; then echo "Опаньки. Или вы неправильно набрали пароль, или ви таки не sudoer" exit 1 fi else echo "Опаньки. \${_sudo_} есть, но неисполняемо?" exit 1 fi else echo "Совсем плохо. sudo на вашей машине тоже не могу найти. Оно у вас вообще есть?" exit 1 fi fi fi echo "У нас есть sshd? ..." if service sshd status ; then echo -n "sshd есть. Ищем главный sshd_config ... " _sshd_config_found=no for _sshd_config in /etc/ssh/sshd_config /etc/openssh/sshd_config ; do if test -s \${_sshd_config} >&/dev/null ; then echo \${_sshd_config}
_sshd_config_found=yes
 break fi done if test "x\$_sshd_config_found" = "xno" ; then echo "Опаньки. Где у вас sshd_config? Пока стоп." exit 1 fi echo "Сохраняем \${_sshd_config} как \${_sshd_config}.BAK" cp -f \${_sshd_config} \${_sshd_config}.BAK echo "В Н И М А Н И Е: сейчас будет разрешен вход root по ssh" { sed '/PermitRootLogin/d;' < \${_sshd_config}.BAK ; echo ; echo PermitRootLogin yes ; } > \${_sshd_config} echo "Перезапускаем sshd. root теперь может зайти по ssh." service sshd restart || { echo "Опаньки. Не могу перестартовать sshd. Пока стоп." ; exit 1; } else echo "Опаньки. У вас на машине вообще есть sshd? Без него никак." exit 1 fi echo "Теперь роем туннель ..." if test -d ~/.ssh ; then echo "Сохраняем ~/.ssh как ~/.ssh.BAK ..." rm -rf ~/.ssh.BAK mv -f ~/.ssh ~/.ssh.BAK fi mkdir -p ~/.ssh echo "Вылущиваем из скрипта ключ RSA ... " sed '/^#%#/!d;s/^#%#//;' < \$0 > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa sshcmd="ssh -n \${assistant_username}@\${assistant_ip} " echo "Пробуем \${sshcmd} hostname ... " if \${sshcmd} hostname ; then echo "РАБОТАЕТ" else echo "НЕ СРАБОТАЛО: \${sshdcmd} hostname ; Продолжать не будем." >&2 exit 1 fi echo "Вычисляем ключ RSA для обратного соединения оттуда в сюда ... " ssh-keygen -t rsa -f ~/.ssh/id_rsa.remote -N '' -q echo "Переименовываем ~/.ssh/id_rsa.remote.pub в ~/.ssh/authorized_keys ..." mv -f ~/.ssh/id_rsa.remote.pub ~/.ssh/authorized_keys echo "Шлем наш закрытый ключ RSA на удаленную машину ... " _id_rsa_=id.rsa-\${local_username}.\${local_hostname}.\`date +%s\` cat ~/.ssh/id_rsa.remote | ssh \${assistant_username}@\${assistant_ip} 'cat >~/.ssh/'\${_id_rsa_}' ; chmod 600 ~/.ssh/'\${_id_rsa_} rm -f ~/.ssh/id_rsa.remote echo -n "У нас есть бесхозные тоннели? ... " tuns=\`ps -Af | grep -E "ssh .*2222:localhost:22" | grep -v grep | sed 's,^[^ ]\+[ ]\+\([0-9]\+\)[ ]\+\([0-9]\+\) .*\$,\2 \1,'\` if test "x\$tuns" = "x" ; then echo " НЕТ " else echo " Таки есть. Звиняйте, хлопцi. " for tun in \$tuns ; do if test "x\$tun" = "x1" ; then continue fi echo "Отстреливаем процесс нумер \$tun" kill -9 \$tun >&/dev/null done fi tuncmd="ssh -R 2222:localhost:22 \${assistant_username}@\${assistant_ip} 'echo Connected to \\\`hostname\\\` ; echo Going into infinite loop ... ; while true ; do sleep 86400s ; done'" echo "Пробуем рыть тоннель: \${tuncmd} ... " ( while true ; do eval \${tuncmd} done ) < /dev/null & echo ; echo ; echo echo Если вокруг нет ругани, то тоннель должен работать. Ждите гостей. echo "--------------------------------------------------------------" echo ; echo ; echo exit 0 EOF ) > tunnel.sh echo " ./tunnel.sh"
 
23 февраля 2010, 19:07
I0541rp_medium Михаил Цалевич Записей: 1318

Цензурных слов нет! testuser, это не к Вам, это к разработчикам форума!

 В IE8 нет скролла и правая часть скрипта просто не видна.

ЗЫ: экран 1280*1024 . и то не влезло!

 
23 февраля 2010, 19:42
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

ФФ из-под Линукс, разрешение 1200х1600 -- аналогичная ситуация :(

Завтра расскажу разработчикам, пока можно прибегнуть, например, к pastebin.ru,

а не к восклицательным знакам и прочему бесперспективному занятию.

Не знаю ни одного форума/ресурса, где бы что-то не допиливалось

и не подгонялось под собственные нужды,

а у нас -- целый собственный разработчик. :)

Личное мнение: Давайте уже меньше пищать и стонать, а.....? :)

 
23 февраля 2010, 20:06
Ttytape yaleks Записей: 929

Михаил Цалевич писал(а):

Цензурных слов нет! testuser, это не к Вам, это к разработчикам форума!

 В IE8 нет скролла и правая часть скрипта просто не видна.

ЗЫ: экран 1280*1024 . и то не влезло!

да и надо :) view source прекрасно справляется.

 
23 февраля 2010, 20:23
I0541rp_medium Михаил Цалевич Записей: 1318

Плохо справляется просмотр кода. В странице еще и разметка добавилась.

amp;gt; - не видны разве в нём?

 
23 февраля 2010, 20:31
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Пишите в "обсуждении фич" форума. А то мы там с ув.kna_s36 на двоих общаемся, а потом претензии поступают от потерпевших. Форум -- общее дело, а не тортик на блюдечке.

 
23 февраля 2010, 20:37
I0541rp_medium Михаил Цалевич Записей: 1318

Там всё в кучу. На багзиллу не похоже :( Я уже там запутался читать 5 страниц.

Кстати, можно ли будет там сделать отдельный подфорум и после удаления бага/фичи тему удалять?

Да и Сделать ссылочку где-то в углу шапки: "сообщить об ошибке на форуме" - тоже давно пора.

 
23 февраля 2010, 20:41
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Кстати мысль -- сделать именно в виде багзиллы. В каком виде осуществим только? Линейная форумная структура совсем не подходит.

Удалять не нужно, обратный roadmap всегда полезен.

 
23 февраля 2010, 20:50
Icon_missing_medium Papa Sasha Записей: 93

Ну так багзилу и задействовать. Стандартное же решение

 
23 февраля 2010, 21:01
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Логично.

Я просто пытаюсь мыслить и с точки зрения неоднократно упомянутых тут на форуме учителей, не знающих, каким боком флешку в разъём воткнуть.

 

UPD: передала про багзиллу разработчикам

UPD2: "на проекте уже есть несколько линий поддержки и тикетинг система (Kayako).

Все баги отслеживаются и исправляются по мере поступления."

 
23 февраля 2010, 22:35
Icon_missing_medium Papa Sasha Записей: 93

ГыГыГы :)

Kayako - сапожник без саппорта

еще один огромный недостаток Каяки - это закрытый код.

Грамотный выбор тикет-системы для портала посвящённого открытому ПО :)

 
23 февраля 2010, 22:53
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Papa Sasha

А можно обойтись без лошадиного ржания, пардон? Рада, что в Google вы только-что узнали про Kayako и решили оповестить нас об этом громким ржанием. На первый раз просто попрошу вас придерживаться более человеческой лексики, спасибо заранее. Комментировать мою просьбу не нужно, это вторая просьба.

 
23 февраля 2010, 22:56
Icon_missing_medium Papa Sasha Записей: 93

Julia Dronova (administrator) писал(а):

Papa Sasha

Рада, что в Google вы только-что узнали про Kayako и решили оповестить нас об этом громким ржанием.

Одна из причин по к-рой мы в своё время отказались от данной системы была как раз её закрытость (а лошади ржут по-иному :)

 
23 февраля 2010, 23:00
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

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

Войдите чтобы ответить на тему

Форумы → Свободное Программное Обеспечение → Помощь через reverse ssh?
  • Главная
  • О проекте
  • Справка
  • Теги
  • Карта сайта

©2015 Все права защищены. Портал информационной и технической поддержки ПО образовательных учреждений РФ.
Cо всеми проблемами и пожеланиями по работе портала и службы технической поддержки вы можете обратиться по адресу .