How-to`s — Помогаем с помощью удаленного управления
Вчера мне в IM отправили сообщение вида "Привет, я от твоего приятеля, поможешь в линуксе?". Делать было нечего, так что решил помочь.
Человек оказался не слишком опытным, но мог на некотором уровне пользоваться консолью, поэтому сначала решил использовать простейший метод - "Введи в консоль эту команду и скопируй сюда вывод". Сами понимаете, что это оказалось очень неудобным.
В результате я решил воспользоваться удаленным управлением. Ниже я напишу, какие проблемы встретил и как можно помочь человеку в данной ситуации.
Первым делом вспомнил про SSH. Но для начала нужно выяснить IP-адрес и проверить наличие NAT. Вот как раз тут я ошибся и потерял много времени. Я попросил своего нового знакомого зайти на 2ip.ru, он сказал мне свой внешний IP. Пропинговал - доступен. Но после нескольких неудачных попыток подключения я понял, что на самом деле пытаюсь подключиться к шлюзу. Поэтому ниже расскажу более корректным способ.
Для этого открываем Система - Параметры - Удалённый рабочий стол (Будем считать, что у человека, к которому мы хотим подключиться, стоит Ubuntu. Если это не так, то предварительно ставим пакет vino и запускаем vino-preferences). Отмечаем две верхние галочки и программа выносит диагноз.
Оп-па! Просто так не сможем подключиться(*). Если всё же доступ есть и из Интернета, то дальше сами знаете, что делать - ставите VNC-клиент и подключаетесь.
Но в нашем случае надо действовать иначе. Есть множество способов, например, можете попробовать перенаправление портов с помощью SSH. Я решил воспользоваться самым простым способом, который вспомнил - Teredo. Эта штуковина позволяет легко получить "белый" IPv6 адрес. Сначала устанавливаем пакет miredo, после этого смотрим вывод команды ifconfig teredo. В поле inet6 addr видим IPv6-адрес, он должен начинаться на 2001.
Не забываем настроить IPv6 и у себя. Можно опять же воспользоваться Teredo, можно использовать 6to4 или туннельный брокер, подробнее читайте тут. После этого либо используем SSH и командуем ssh user@ipv6, либо берем VNC-клиент. У меня заработали Vinagre и Remmina 0.8.x. Для обоих клиентов IPv6 нужно поместить в квадратные скобки вот так: [ipv6].
(написал случайный адрес)
Подключаемся и действуем!
Одно замечание. В Teredo адрес меняется каждый раз, поэтому если захотите подключиться ещё раз, то придется опять спрашивать вывод ifconfig teredo. Если вы планируете подключаться часто, то неплохо бы создать JabberID и написать простейший скрипт, который с помощью sendxmpp отсылает вам вывод. Можно сделать то же самое, но через E-mail.
(*) Как показало последующее тестирование, и этот способ может обмануть. Дополнительная проверка - при включенном Vino идем на http://canyouseeme.org/ и вбиваем туда порт 5900. Если пишет Success, то скорее всего подключиться можно.
Человек оказался не слишком опытным, но мог на некотором уровне пользоваться консолью, поэтому сначала решил использовать простейший метод - "Введи в консоль эту команду и скопируй сюда вывод". Сами понимаете, что это оказалось очень неудобным.
В результате я решил воспользоваться удаленным управлением. Ниже я напишу, какие проблемы встретил и как можно помочь человеку в данной ситуации.
Первым делом вспомнил про SSH. Но для начала нужно выяснить IP-адрес и проверить наличие NAT. Вот как раз тут я ошибся и потерял много времени. Я попросил своего нового знакомого зайти на 2ip.ru, он сказал мне свой внешний IP. Пропинговал - доступен. Но после нескольких неудачных попыток подключения я понял, что на самом деле пытаюсь подключиться к шлюзу. Поэтому ниже расскажу более корректным способ.
Для этого открываем Система - Параметры - Удалённый рабочий стол (Будем считать, что у человека, к которому мы хотим подключиться, стоит Ubuntu. Если это не так, то предварительно ставим пакет vino и запускаем vino-preferences). Отмечаем две верхние галочки и программа выносит диагноз.
Оп-па! Просто так не сможем подключиться(*). Если всё же доступ есть и из Интернета, то дальше сами знаете, что делать - ставите VNC-клиент и подключаетесь.
Но в нашем случае надо действовать иначе. Есть множество способов, например, можете попробовать перенаправление портов с помощью SSH. Я решил воспользоваться самым простым способом, который вспомнил - Teredo. Эта штуковина позволяет легко получить "белый" IPv6 адрес. Сначала устанавливаем пакет miredo, после этого смотрим вывод команды ifconfig teredo. В поле inet6 addr видим IPv6-адрес, он должен начинаться на 2001.
Не забываем настроить IPv6 и у себя. Можно опять же воспользоваться Teredo, можно использовать 6to4 или туннельный брокер, подробнее читайте тут. После этого либо используем SSH и командуем ssh user@ipv6, либо берем VNC-клиент. У меня заработали Vinagre и Remmina 0.8.x. Для обоих клиентов IPv6 нужно поместить в квадратные скобки вот так: [ipv6].
(написал случайный адрес)
Подключаемся и действуем!
Одно замечание. В Teredo адрес меняется каждый раз, поэтому если захотите подключиться ещё раз, то придется опять спрашивать вывод ifconfig teredo. Если вы планируете подключаться часто, то неплохо бы создать JabberID и написать простейший скрипт, который с помощью sendxmpp отсылает вам вывод. Можно сделать то же самое, но через E-mail.
(*) Как показало последующее тестирование, и этот способ может обмануть. Дополнительная проверка - при включенном Vino идем на http://canyouseeme.org/ и вбиваем туда порт 5900. Если пишет Success, то скорее всего подключиться можно.