- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF136:DrBrown3
Материал из Linuxformat.
Содержание |
Из Windows в Linux
- Узнайте, как получить доступ к любимому Linux из компьютера с менее любимой Windows, при помощи нашего набора утилит.
На курсах для администраторов Linux, которые я веду, на удивление высока (едва ли не 50 %) доля слушателей, не имеющих прямого доступа к администрируемым компьютерам. У большинства из них на компьютере Windows. К счастью, в Windows есть несколько утилит для доступа к серверам Linux, и мы рассмотрим некоторые из них.
Я разделил их на три группы: для доступа к командной строке, для передачи файлов и для доступа к графическому рабочему столу.
Утилиты командной строки
Самый простой и определенно самый старый протокол для удаленного доступа к командной строке – Telnet, и, насколько мне известно, это единственный клиент для удаленного доступа к оболочке, поставляемый с Windows. Его очень легко настроить и запустить из скромной командной строки Windows. Однако есть по меньшей мере три причины, почему Telnet, пожалуй, не лучший выбор. Во-первых, он уязвим для злоумышленников, перехватывающих сетевой трафик, так как все данные (включая имя пользователя, пароль и все соответствующие диалоги) передаются в режиме, который криптографы называют открытым текстом. Упоминая Telnet на своих курсах, я кривлюсь и говорю, что он устарел, но, если честно, опасность его использования в доверенной локальной сети преувеличена.
Вторая причина не пользоваться Telnet более прагматична: на вашем сервере Linux в конфигурации брандмауэра порт Telnet (23) скорее всего закрыт, а сервер Telnet скорее всего не установлен. Конечно, если у вас есть права администратора на сервере, все это поправимо. Но третья и самая веская причина – есть гораздо более безопасное, гибкое и простое в настройке решение: SSH (защищенная оболочка).
SSH и его друзья
Защищенная оболочка (SSH) – безопасный протокол для удаленного доступа к командной строке. Безопасность обеспечивается шифрованием с открытым/закрытым ключом (нечто связанное с перемножением двух огромных простых чисел – ну, так мне говорили), которое применяется и для аутентификации сервера клиентом, и для создания общего ключа, используемого при всем последующем обмене данными (включая ввод имени пользователя и пароля). Таким образом, перехват трафика соединения SSH не имеет для кандидата в хакеры, прослушивающего вашу сеть, никакого смысла. У протокола SSH есть одна важная возможность: зашифрованным соединением можно обеспечить трафик на другие сетевые порты, создав туннель. Это называется пробросом портов [port forwarding], и я вернусь к нему позже.
В стандартной поставке Windows нет клиента SSH, но существует несколько свободных клиентов, которые можно скачать. Например, в наборе утилит Cygwin (вернитесь на предыдущую страницу с руководством по Cygwin) есть клиент командной строки SSH и связанные с ним утилиты вроде SCP, ssh-keygen и ssh-agent. Они работают точно так же, как в Linux. Но, наверное, самый известный клиент SSH для Windows – Putty, который можно бесплатно загрузить с сайта http://www.chiark.greenend.org.uk.
В Putty есть графическое окно настройки; из-за него программа выглядит сложной и пугает, но есть хорошее руководство пользователя, и на самом деле задать нужно только имя пользователя и протокол (SSH). Более сложные конигурации можно запомнить как «сохраненные сеансы» и загружать их в будущем. При открытии соединения вы попадаете в окно терминала, такое же, как любой другой терминал, поэтому я не стал тратитьместо на экранный снимок.
В вашем дистрибутиве Linux точно будет сервер SSH, но, возможно, не установленный по умолчанию. В Ubuntu, например, нужно установить пакет openssh-server.
Утилиты передачи файлов
Как и Telnet, FTP (протокол передачи файлов) стар как мир, и в Windows есть клиент командной строки FTP. Недостатки FTP похожи на недостатки Telnet: нет шифрования, поэтому ваши имя пользователя и пароль (не говоря уже о копируемых файлах) передаются открытым текстом. Однако FTP продолжает широко использоваться для доступа к файлам публичных интернет-репозиториев – это так называемый «анонимный» FTP, при котором верные имя и пароль не требуются, а файлы можно только скачивать, поэтому отсутствие шифрования не играет роли. В роли утилиты удаленного доступа с рабочего стола Windows к серверу Linux его возможности ограничены. В дистрибутиве Linux FTP-сервер скорее всего не установлен по умолчанию, хотя доступны несколько серверов, и я детально описал настройку ProFTP в своей рубрике в LXF132. Необычное использование портов FTP (сервер открывает новое соединение с клиентом) вызывает проблемы с брандмауэрами.
Более удачный вариант для копирования файлов между Windows и Linux – SCP (защищенная cp). Эта команда построена поверх протокола SSH; ее синтаксис является расширением cp. В Windows такой утилиты нет, но она есть в Cygwin.
Вам может приглянуться и WinSCP (http://winscp.net), графическая оболочка SCP, доступная для Windows. Она дает и традиционное представление файловой системы удаленного компьютера в стиле Проводника, и двухпанельное представление файловых систем удаленного и локального компьютеров в стиле файловых менеджеров, с возможностью перетаскивать файлы с одной панели на другую (доступны и подключаемые модули WinSCP для двухпанельных файловых менеджеров Windows). WinSCP проста в установке и настройке. Для подключения нужно указать имя сервера, имя пользователя и пароль как при обычном подключении по SSH. WinSCP может работать по протоколам передачи файлов FTP, SFTP или SCP; я бы рекомендовал SCP.
Утилиты для доступа к GUI
VNC (виртуальный сетевой протокол) – по сути, способ передачи содержимого удаленного буфера кадра (т. е. удаленного рабочего стола) на экран локального компьютера и эффективного обновления локальной копии при изменении содержимого удаленного рабочего стола. Поэтому абсолютно безразлично, какая ОС стоит на удаленном компьютере или какой рабочий стол используется. Нужно только запустить на удаленном компьютере сервер VNC. VNC позволяет удобно управлять удаленным рабочим столом. Это можно использовать при обучении, когда удаленный пользователь смотрит на свой экран, пока вы управляете им во время решения какой-то задачи. Или просто для доступа к (например) рабочему столу Red Hat со стоящего перед вами компьютера с Windows.
В качестве иллюстрации попробуем подключиться к рабочему столу Ubuntu из Windows через VNC. Мы даже пойдем чуточку дальше, протуннелировав трафик VNC через SSH-соединение, поэтому единственный порт, который нужно открыть в Ubuntu – 22.
- В Ubuntu я установил сервер SSH и x11vnc, которая позволяет удаленно подключиться к открытой сессии X: $ sudo apt-get install opensshserver x11vnc
- В Windows я установил Putty и TightVNC (один из многих клиентов VNC для Windows).
- В окне настроек Putty в разделе Session я ввел IP-адрес сервера Ubuntu.
- В окне настроек Putty в разделе Connection > SSH > Tunnels я ввел 5900 как исходный порт и localhost:5900 как порт назначения. Здесь мы выполняем локальное перенаправление портов на компьютере Windows, поэтому сервер VNC (который слушает на порте 5900 на компьютере Ubuntu) доступен на порте 5900 на компьютере Windows. Зайдя в командную строку Ubuntu из Putty, я запустил сервер VNC командой: $ x11vnc -safer -localhost -noxdamage -nopw -once -display :0 (Здесь понадобилось немного погуглить и поэкспериментировать, чтобы найти верный набор опций.)
- На компьютере Windows я запустил TightVNC и подключился к localhost:5900. Наградой мне был вид ярко-лилового рабочего стола Ubuntu.
Так как VNC нужно определять изменения удаленного буфера кадра и передавать их пиксель за пикселем, при обновлении экрана будут заметны подергивания картинки. В большинстве случаев это не мешает, но рисованием в GIMP я бы заниматься не стал.
Начало конца
Стараясь не сходиться друг с другом как можно в большем, Windows и Linux отличаются друг от друга даже завершением строк в текстовых файлах. В Windows используется CRLF («возврат каретки» плюс «перевод строки»); в Linux используется просто LF. Поэтому текстовые файлы, скопированные из Linux в Windows, нельзя будет нормально редактировать в Блокноте (хотя Wordpad нормально с ними работает). В FTP есть режим передачи ASCII, который об этом заботится, и есть простые утилиты unix2dos и dos2unix (также известные как todos и fromdos), выполняющие перевод символов.
Перебросьте этот порт!
В SSH есть довольно полезный прием – проброс удаленного порта, позволяющий удаленному серверу SSH слушать соединения на любом заданном порте и перенаправлять трафик через защищенный SSH-туннель на заданный порт на локальном компьютере. В верхней части рисунка пользователь на компьютере Mercury выполнил команду:
$ ssh -R 4023:mercury:23 venus
Затем на компьютере Earth пользователь запускает Telnet, который подключается на порт 4023 компьютера Venus. Перенаправление портов означает, что трафик защищен, и единственный порт, который должен быть открыт на сервере – 22. На практике ‘Venus’ и ‘Earth’ часто один и тот же компьютер.
Перенаправление локального порта похоже на перенаправление удаленного, но в этом случае трафик перенаправляет клиент, а не сервер. В нижней части рисунка пользователь на компьютере Mercury запустил команду:
$ ssh -L 8080:earth:80 venus
(Опять же, ‘venus’ и ‘earth’ часто один и тот же компьютер.) Затем можно подключиться к зашифрованному каналу, открыв в браузере localhost:8080. В основном тексте приведен пример проброса удаленного порта для VNC-трафика.