Туннелирование X-соединений через SSH
Туннелирование X-соединений через SSH
Из материала, рассмотренного ранее в данной главе, следует, что для инициализации Х-соединения используются два отдельных, независимых друг от друга протокола. Во-первых, работая на компьютере, выполняющем роль X-сервера, вы используете клиент-программу удаленной регистрации, работающую в текстовом режиме, например программу telnet. Во-вторых, после установления соединения вы инициируете взаимодействие X-клиента с X-сервером. Выполнив основные действия по установке соединений, вы можете вызвать на своем компьютере любую команду, например xclock, и соответствующая программа (в данном случае xclock) будет выполняться на удаленном компьютере. Данная конфигурация подходит для решения многих задач, но при ее использовании могут возникать проблемы. Одна из этих проблем связана с тем, что в сеансе X-взаимодействия данные передаются в незакодированном виде и могут быть перехвачены. Тот факт, что на каждом из взаимодействующих компьютеров должен выполняться сервер, также можно считать недостатком. Если эти компьютеры разделены брандмауэром или маршрутизатором, осуществляющим маскировку пакетов, эти программы должны быть сконфигурированы специальным образом, иначе обмен по протоколу X Window станет невозможным. Одно из возможных решений обеих проблем состоит в использовании протокола SSH. Этот протокол может применяться как для установления начального соединения между X-клиентом и X-сервером, так и для туннелирования данных, передаваемых в рамках этого соединения.
Основные вопросы, связанные с настройкой и использованием SSH, рассматривались в главе 13. Для того чтобы туннелирование протокола X Window посредством SSH стало возможным, надо соответствующим образом сконфигурировать средства поддержки SSH.
• В конфигурационном файле/etc/ssh/ssh_config клиентской программы SSH (эта программа выполняется на том компьютере, на котором расположен X-сервер) следует задать значение yes опции ForwardX11. Аналогичный результат можно получить, указав при запуске ssh опцию -X. (Обратите внимание на регистр символа; если в опции -х вы зададите символ нижнего регистра, туннелирование будет запрещено.)
• В файле/etc/ssh/sshd_config на компьютере, на котором выполняется SSH-сервер (эта машина играет роль клиента в X-взаимодействии), опция X11Forwarding должна иметь значение yes. Эта опция сообщает серверу SSH о том, что локальные вызовы X-сервера должны перехватываться и направляться SSH-клиенту.
При туннелировании X-соединения сервер SSH "подменяет" локальный X-сервер. Если конфигурация установлена правильно, средства поддержки SSH устанавливают переменную окружения DISPLAY таким образом, что X программы передают данные через порт локального X-сервера (по умолчанию это X-сервер 10, или TCP-порт 6010). С этим портом связывается сервер SSH. Вместо того чтобы отображать информацию на локальной машине, сервер SSH кодирует ее и передает клиенту SSH. Клиент, в свою очередь, запрашивает локальный X-сервер (он определяется значением переменной окружения DISPLAY на этом компьютере), а данные, полученные в результате этого обращения, передает серверу SSH, который доставляет информацию X-клиенту. Таким образом, сервер SSH "выдает себя" за X-сервер, а клиент SSH "подменяет" клиентскую программу X Window.
Такой подход имеет ряд преимуществ по сравнению с обычным X-обменом. Для взаимодействия двух компьютеров используется лишь одно соединение, что упрощает настройку сетевых средств. Если вы хотите спрятать X-сервер за брандмауэром или маршрутизатором, выполняющим NAT-преобразование, это проще сделать при работе посредством SSH, чем в случае, когда используется Telnet или другой протокол удаленной регистрации. Кроме того, протокол SSH предполагает кодирование передаваемых данных. Поэтому если информация будет перехвачена по пути от одного компьютера к использовать ее вряд ли удастся. Туннелирование X-соединения средствами SSH имеет один недостаток. Как известно, для кодирования информации приходится выполнять большой объем вычислений, поэтому использование SSH создает дополнительную нагрузку на процессоры компьютеров на обоих концах соединения. В результате скорость обмена X-клиента с X-сервером снижается. Замедление работы вследствие использования SSH заметно при скорости процессора около 200 МГц, однако во многих случаях повышение уровня защиты оправдывает уменьшение производительности компьютеров. Чтобы снизить требования к пропускной способности линий, можно использовать сжатие информации. С другой стороны, сжатие данных создает дополнительную нагрузку на процессор, что может еще больше уменьшить скорость обмена. Желательно испробовать обмен данными со сжатием и без сжатия и экспериментально определить, какой режим более благоприятен для компьютера и сетевых средств.
Сказанное выше предполагает, что на обоих концах соединения используются компьютеры под управлением Linux или UNIX. Если X-сервер выполняется в среде Windows, MacOS, OS/2 или в другой операционной системе, следует выяснить, поддерживает ли клиент SSH туннелирование X-соединений. Если клиент SSH предоставляет такую возможность, вам надо уметь активизировать данные средства. Подробную информацию вы получите, прочитав документацию на программы поддержки SSH.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
17.3.2. Установка соединений
17.3.2. Установка соединений После создания потокового сокета его необходимо присоединить к чему-то часто используемому. Установка соединений сокетов является в большой степени несимметричной задачей, поскольку каждая сторона проводит соединение по-разному. Одна сторона
17.3.4. Ожидание соединений
17.3.4. Ожидание соединений После создания сокета сервер привязывает к нему адрес с помощью функции bind(). Далее процесс сообщает системе путем вызова функции listen(), что он готов разрешить другим процессам соединение с данным сокетом (по указанному адресу). Если сокет привязан
17.5.7. Ожидание TCP-соединений
17.5.7. Ожидание TCP-соединений Ожидание соединений TCP происходит почти идентично ожиданию соединений домена Unix. Единственные различия заключаются в семействах протоколов и адресов. Ниже показан вариант примера сервера домена Unix, который работает через сокеты TCP. 1: /* tserver.с
Эффективность одновременных соединений
Эффективность одновременных соединений Каков выигрыш в эффективности при установлении множества одновременных соединений? В табл. 16.1 показано время, необходимое для выполнения определенной задачи, которая состоит в том, чтобы получить от веб-сервера домашнюю страницу
Использование PPP-соединений
Использование PPP-соединений При рассмотрении вопросов сетевого взаимодействия предполагается, что компьютер под управлением Linux подключен к обычной локальной сети, узлы которой соединены посредством сетевых кабелей (например, к сети Ethernet). В такой среде можно
2.2.1 Коммуникации с созданием соединений (TCP)
2.2.1 Коммуникации с созданием соединений (TCP) Протокол TCP (Transmission Control Protocol) отвечает в TCP/IP за надежные коммуникации с созданием соединения по принципу "равный с равным". Сеанс регистрации с терминала и пересылка файлов выполняются с помощью
2.2.2 Коммуникации без создания соединений (UDP)
2.2.2 Коммуникации без создания соединений (UDP) Некоторые операции обмена данными не требуют постоянного взаимодействия систем. Например, база данных на сетевом сервере может содержать таблицы имен сотрудников компании и их телефонные номера. Узнать номер телефона
5.2. Использование безопасных соединений
5.2. Использование безопасных соединений Выберите сервер, поддерживающий безопасные соединения. Помня о "плохом админе", не стоит выбирать локальный корпоративный сервер или почтовик провайдера. Лично я использую cервис Mail.ru, и мне его вполне достаточно (алгоритм
7.4.1. Передача данных через параметры и через глобальные объекты
7.4.1. Передача данных через параметры и через глобальные объекты Различные функции программы могут общаться между собой с помощью двух механизмов. (Под словом “общаться” мы подразумеваем обмен данными.) В одном случае используются глобальные объекты, в другом –
Курсоры для реентерабельных соединений
Курсоры для реентерабельных соединений Для выполнения реентерабельного соединения сервер поддерживает один внутренний курсор для каждого потока в пределах образа одной таблицы. Концептуально он трактует контексты двух курсоров, как если бы они были отдельными
8.1. Причина популярности DSL-соединений
8.1. Причина популярности DSL-соединений DSL (Digital Subscriber Line) — цифровая абонентская линия, позволяющая производить двунаправленный обмен данными по телефонной линии. Существуют несколько вариантов DSL-линий: ADSL, VDSL, SDSL, RADSL. Наиболее распространены ADSL-линии (Asymmetric DSL) —
6.2. Изображение резьбовых соединений
6.2. Изображение резьбовых соединений Резьбовые соединения можно разделить на две группы:? соединения, осуществляемые непосредственным свинчиванием соединяемых деталей, без применения специальных соединительных частей;? соединения, осуществляемые с помощью
8.2. Подключаться через телефон или через модем?
8.2. Подключаться через телефон или через модем? Вы можете использовать для подключения к телефону как мобильный телефон, так и EDGE/3G-модем. Какой вариант выбрать? Тут нужно решить, что для вас важнее — экономия или удобство. Ведь сотовый телефон есть у каждого и можно
10 советов по защите Wi-Fi соединений для путешественников
10 советов по защите Wi-Fi соединений для путешественников Автор: Michael KassnerИсточник: http://www.winblog.ru/Тема безопасности Wi-Fi соединения в наши дни очень популярна. На ряде форумов, ведутся энергичные дискуссии на предмет «лучшего решения». Один из наиболее часто обсуждаемых
Глава 13 Туннелирование
Глава 13 Туннелирование В этой главе обсуждаются следующие темы: • Основные требования к системам туннелирования • Проектирование сквозных систем туннелирования • Сезам, откройся: аутентификация • Переадресация команд: применение переадресации команд для
Протокол установления соединений
Протокол установления соединений Протокол установления соединений Handshake Protocol состоит как бы из трех подпротоколов, которые позволяют выполнить аутентификацию сторон, согласовать алгоритмы и параметры безопасности для протокола передачи записей [19].Handshake Protocol