У многих довольно часто возникает такая необходимость. Это может быть необходимо для того чтобы управлять рабочим или домашним компьютером отовсюду, где есть доступ к Интернет. Сейчас технологии достигли такого уровня, что это не представляет сложностей. Поэтому способов для подключения к удаленным компьютерам существует много. Самые удобные из них мы и рассмотрим...
Какими способами можно подключиться к удаленному компьютеру?
Для начала нужно определиться с тем, что мы собираемся делать на удаленной машине и подобрать способ доступа который для этого подойдет и будет оптимальным. Кроме того нужно рассмотреть возможность такого подключения - далеко не везде и не всегда можно запросто подключиться к удаленной машине.
Управление графической оболочкой удаленного компьютера.
1.RDP - Remote Desktop Protocol.
Протокол управления удаленным рабочим столом от Microsoft. Возможности для его использования встроены в любую Windows. В том числе и клиент подключения к удаленному рабочему столу. Настраивается достаточно легко. Для управления Windows машинами оптимальный вариант - показывает наилучшую производительность и удобство.
Для linux существует клиент Remmina и сервер Xrdp - посредственная производительность. Remmina - содержит ошибки, создающие ощутимые неудобства при использовании. Однако в отсутствие вариантов и при необходимости вполне рабочее решение.
Что касается безопасности - шифрование встроено в протокол RDP.
2.VNC - Virtual Network Computing. Свободный аналог RDP. Однако испольует другой принцип, работает через старый протокол RFB (remote framebiffer). Без шифрования, для безопасности необходимо использовать шифрование с помощью других протоколов. Используется обычно для управления unix-хостами, там, где необходимо управление графической оболочкой. Это бывает необходимо достаточно редко, поскольку nix-системы обладают очень мощным консольным текстовым интерфейсом, который предоставляет абсолютно полный контроль над ОС. Зачастую используется в системах виртуализации для подключения к графической консоли виртуальных машин.
Имеет реализации для Windows, как клиентские, так и серверные.
3. Сторонние программы. Это в первую очередь популярнейший Teamviewer и менее известный Ammyy. Есть и другие, о который тут нет смысла упоминать. Очень удобный софт, который, однако, имеет существенные недостатки. Главный из них вы используя это ПО - вы по сути предоставляете доступ к своим данным разрабочикам этого ПО.
Точно неизвестно на основе чего работает этот софт. Кроме того, обладают крайне низкой производительностью, особенно если у вас посредственное подключение к интернету. Кроме того, не требует никаких знаний для организации удаленного подключения: скачал - поставил- сообщил идентфификатор и пароль - установлено соединение. Достаточно чтобы обе стороны имели доступ к интернет. Пользователям не нужно знать топологию сетей, не нужно знать никакие ip-адреса, порты и протоколы. Почему я расписываю это как преимущество такого способа - потому что все остальные описанные здесь способы предполагают необходимость знать адреса, порты и протоколы. А тут легко и быстро. Для простейших задач вроде диагностики, мониторинга или оперативного выполнения несложных действий отлично подходит. Но пытаться полноценно работать через teamviewer я бы и врагу не пожелал:)
Есть и другие, но они специфичны, и вспоминать о них здесь мы не будем.
Управление удаленным компьютером через текстовый интерфейс, командная строка.
1. Telnet. Старейший и простейший сетевой протокол управления. Позволяет управлять через командную строку вообще чем угодно. На данный момент, как правило, используется только как средство диагностики и отладки. Также простое сетевое оборудование при необходимости обычно управляется через telnet - например модемы. Мало кто знает, но многие домашние роутеры позволяют подключиться по telnet. Имеет проблемы с безопасностью из-за своей простоты.
2. Rlogin - практически то же самое, что и телнет. Используется (редко) в UNIX.
3. SSH - Secure SHell. Это то, без чего было бы немыслимо существование современного интернета. Хотя рядовой пользователь обычно ничего об этом не слышал, но это самый оптимальный и эффективный способ управления удаленными компьютерами. Используется в системном администрировании. Суть - предоставление доступа к управлению командной строкой, текстовым интерфейсом через защищенное шифрованное соединение. Опять же, рядовой пользователь не в курсе но 95% всех серверов, из которых в принципе состоит Интернет, управляются именно через SSH. Поэтому, если вам действительно интересна тема удаленного управления - мимо этого не пройти. Однако есть минусы, которые и задвигают технологию на задний план:
Во-первых, для рядового пользователя управление компьютером через командную строку представляет сложность.
Во-вторых, через это не получится без ухищрений управлять windows-машиной, ввиду убогости ее командной строки и отсутствия SSH по умолчанию.
Однако, ssh позволяет делать другие вещи, которые будут очень полезны рядовому пользователю для настройки доступа к удаленному компьютеру. Это туннелирование, причем шифрованное. SSH позволяет создавать туннели и использовать внутри них любые описанные здесь протоколы.
4. Экзотика - netcat. Это вообще сырое сетевое соединение, без шифрования и каких либо стандартов и пределов. Просто, как колесо. Позволяет делать что угодно, и осуществить удаленный доступ в том числе. Дебри системного администрирования, хакерство и взлом. Довольно сложно в использовании, редко применяется. Однако не упомянуть не мог.
Что нужно для подключения к удаленному компьютеру.
Нужно чтобы между ними была связь. Например, если пользователю необходим доступ по RDP для управления своим домашним компьютером, то он должен каким то образом получить прямой доступ к порту, на котором котором доступен RDP-сервер(сервис) запущенный на домашнем компьютере. Говоря буквально, нужно каким-то образом иметь доступ к порту 3389 удаленной машины. Или же 5901 - если это VNC, а 22 если нужно подключиться по SSH. (это порты по умолчанию, которые при необходимости и желании могут быть другими). И вот здесь начинается вторая часть - каким образом это можно осуществить.
1.Сделать проброс портов (NAT) на межсетевых экранах или серверах.
Например, если это домашний компьютер и он подключен в интернет через какой-либо роутер - нужно в настройках роутера задать настройки для NAT на свой компьютер. Кроме того, необходимо знать внешний IP-адрес своей сети. Мы не сможем это здесь описать, поскольку не существует какого конретного способа. Поскольку условия подключения к интернет, устройства и провайдеры у всех разные. Но общая схема такая как на картинке.
2.VPN - Virtual Private Network. Имеет множество реализаций и вариантов, например Hamachi. Но суть одна - поверх интернет создается "локальная" сеть. Соответственно, каждое устройство, которое в ней оказалось, имеет свой "локальный" IP-адрес и они друг с другом имеют прямую связь. А это позволяет "видеть" и подключаться к нужным портам напрямую. Таким образом, использование способа влечет за собой определенные сложности и требует некоторых знаний. Оптимальный вариант - создать VPN самостоятельно. При использовании сторонних сервисов вроде Hamachi - способ в принципе не отличается от использования Teamviewer.
3.SSH-туннелирование. По сути - позволяет строить VPN без использования сложного ПО и оборудования, без использования сторонних сервисов. Однако требует наличия внешней точки подключения.
Впрочем, необходимость точки подключения требуется и для двух вышеописанных способов. Да и при подключении через teamviewer или hamachi - таковая обязательно существует - сервера принадлежащие этим компаниям. Подключение будет осуществляться через них. Только так, и никак иначе. Именно поэтому говоря о teamviewer мы говорим что вы предоставляете доступ к своим данным непонятно кому. Конечно, крайне маловероятно что кто-то этими данными воспользуется, но возможность такая существует.
Что здесь подразумевается под точкой подключения - это некое устройство, имеющее известный внешний IP-адрес. Вы наверняка слышали о динамических и статических внешних IP. Так вот, для подключения и управления удаленным компьютером на самом деле неважно динамический или статический. Например, домашний роутер, как правило, имеет динамический внешний IP. Важно его знать, но статика или динамика - абсолютно безразлично. Также нет особой разницы где оно находится - на стороне клиента, на стороне сервера или где то в третьем месте, в виде отдельного сервера. Важно чтобы обе стороны так или иначе имели доступ друг к другу - напрямую, или через третью точку.