Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Выход за пределы локальной системы с помощью безопасной командной оболочки

Оригинал: Go Beyond Local with Secure Shell
Автор: Jack Wallen
Дата публикации: 18 ноября 2016 г.
Перевод: А.Панин
Дата перевода: 1 декабря 2016 г.

Выход за пределы локальной системы с помощью безопасной командной оболочки

Для администрирования удаленного сервера вам понадобятся инструменты, корректно работающие за пределами локальной системы. С помощью таких инструментов, как ssh и scp вы сможете получить доступ к удаленным машинам, упростив тем самым свою жизнь.

Если вы захотите стать администратором Linux-систем, вам придется подробно изучить методику использования множества специализированных инструментов. Некоторые из этих инструментов предназначены исключительно для выполнения локальных действий на машине, с которой вы работаете в данный момент: это такие инструменты, как iptables, make, top, diff, tail и многие другие. Область их действия ограничена локальной машиной, следовательно, они не могут применяться для удаленного администрирования серверов и настольных компьютеров, работающих под управлением различных Linux-систем. И даже несмотря на то, что на данный момент существуют инструменты с графическим интерфейсом, которые могут помочь в решении данной проблемы, понимание принципов работы инструментов с интерфейсом командной строки практически равнозначно пониманию принципа работы Linux.

Но что делать в том случае, если вам необходимо выйти за пределы машины с IP-адресом 127.0.0.1 (то есть, вашей локальной машины)? Администрирование удаленного сервера не может осуществляться с помощью инструментов, которые не могут работать по сети. Это именно тот случай, когда могут оказаться полезными такие инструменты, как ssh и scp. С помощью них вы сможете без каких-либо проблем работать с удаленными машинами, упростив тем самым свою жизнь.

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

Дополнительная безопасность

Безопасная командная оболочка (Secure Shell или ssh) является одним из первых инструментов, с которыми сталкиваются системные администраторы при возникновении необходимости в соединении с удаленным Linux-сервером. Она описывается следующим образом (на странице руководства ssh):

ssh (клиент SSH) является программой для входа в удаленную систему и исполнения команд на удаленной машине. Она предназначена для организации надежно шифруемых каналов, которые предназначены для осуществления взаимодействия между двумя ненадежными узлами по ненадежной сети. Соединения по протоколу X11, соединения с произвольными TCP-портами и соединения с сокетами домена UNIX также могут работать поверх созданных подобным образом безопасных каналов.

Наиболее важной особенностью ssh является безопасность. Хотя утилиты telnet и ftp и позволяют выполнять ровно те же операции, что и утилиты ssh и scp соответственно, они не позволяют выполнять их безопасно. Если вы цените информацию, хранящуюся на ваших Linux-машинах, вы должны четко понимать, что утилиты telnet и ftp должны быть в любом случае заменены на более безопасные аналоги. В том случае, если администратор выберет в качестве их аналогов утилиты ssh и scp, он сможет работать с удаленными серверами с приемлемым уровнем безопасности.

Ну а как использовать данные инструменты? Хотите верьте, хотите нет, но они достаточно просты в использовании. Давайте начнем с рассмотрения инструмента, который позволяет безопасно работать с удаленными серверами.

Безопасная командная оболочка

Команда ssh достаточно проста в использовании. Формат команды выглядит следующим образом:

ssh удаленный_узел

где вместо строки «удаленный_узел» должен использоваться либо IP-адрес, либо имя узла удаленного сервера. Приведенная выше команда будет работать лишь в том случае, если вы захотите войти в удаленную систему под таким же именем пользователя, под которым вы работаете с локальной системой.

Другими словами, в том случае, если я вошел в локальную систему под именем пользователя olivia и хочу использовать учетную запись пользователя с именем olivia на удаленной Linux-системе с IP-адресом 192.168.1.166, я могу выполнить команду ssh 192.168.1.166. Мне будет предложено ввести пароль для учетной записи пользователя с именем olivia и после прохождения аутентификации я увижу приглашение командной оболочки bash с удаленной системы.

Но что делать в том случае, если я вошел в локальную систему под именем пользователя nathan и мне нужно войти в удаленную систему под именем пользователя olivia? Мне всего лишь нужно изменить команду следующим образом:

ssh -l olivia 192.168.1.166

То же действие может осуществляться и с помощью следующей формы приведенной выше команды:

ssh olivia@192.168.1.166

В обоих случаях мне будет предложено ввести пароль пользователя olivia. После прохождения процедуры аутентификации я войду в удаленную систему под именем пользователя olivia.

Я предпочитаю активировать режим подробного вывода ssh для того, чтобы получать дополнительную информацию о процессе соединения с удаленной системой. Для этой цели я использую соответствующий параметр утилиты ssh:

ssh -v -l olivia 192.168.1.166

В результате утилита ssh будет выводить информацию, относящуюся к процессу организации соединения (Рисунок 1).

Безопасная командная оболочка организует соединение между двумя узлами

Рисунок 1. Безопасная командная оболочка организует соединение между двумя узлами.

Безопасная командная оболочка позволяет выполнять различные трюки. Одним из таких трюков, который нравится многим людям, является туннелирование соединений с сервером оконной системы X. Он позволит вам входить в удаленную систему и запускать приложения с графическим интерфейсом из этой системы в локальной системе. Все действия, которые вы будете выполнять с графическим интерфейсом этого приложения, будут иметь последствия в удаленной системе (а не в локальной). Для выполнения описанного трюка достаточно добавить один простой параметр в ранее рассмотренную команду:

ssh -l olivia -X 192.168.1.166

После выполнения данной команды и входа в удаленную систему вы сможете ввести еще одну команду для запуска приложения с графическим интерфейсом и начать работу с этим приложением в локальной системе (Рисунок 2).

Запуск экземпляра приложения LibreOffice Writer с удаленной машины

Рисунок 2: Запуск экземпляра приложения LibreOffice Writer с удаленной машины.

Но что делать в том случае, если вам понадобится переместить файлы с локальной машины на удаленную? Для этой цели также существует отдельная команда.

Безопасное копирование файлов

Безопасная командная оболочка предусматривает возможность использования своего протокола для копирования файлов. Давным-давно стандартным инструментом для выполнения данной операции была утилита ftp. На сегодняшний день она также широко используется, но для тех людей, которые хотят максимально безопасно передавать свои файлы по сети, утилита scp будет идеальным вариантом. Эта утилита очень похожа на ssh и позволяет безопасно копировать файлы с одного узла на другой.

С помощью утилиты scp вы можете как отправить файл на удаленный узел, так и скопировать его с удаленного узла. Синтаксис соответствующей команды на первый взгляд может показаться немного запутанным, но после того, как вы поймете его, он станет вполне естественным для вас.

В первую очередь давайте отправим локальный файл на удаленный узел. Структура соответствующей команды будет следующей:

scp имя_файла имя_пользователя@удаленный_узел:/произвольная/удаленная/директория

Представьте, что нам нужно скопировать файл с именем myfile в директорию Documents пользователя olivia на удаленной системе с IP-адресом 192.168.1.166. В этом случае команда будет выглядеть следующим образом:

scp myfile olivia@192.168.1.166:/home/olivia/Documents

При поступлении соответствующего запроса вам нужно будет ввести пароль пользователя olivia, после чего файл myfile будет безопасно скопирован в директорию /home/olivia/Documents на машине с IP-адресом 192.168.1.166.

Теперь представьте, что вам нужно безопасно скопировать тот же файл с удаленной системы с IP-адресом 192.168.1.158 в директорию Documents, расположенную на локальной машине. Команда для выполнения описанной операции будет выглядеть следующим образом:

scp olivia@192.168.1.158:/home/olivia/Documents/myfile /home/olivia/Documents

Теперь вы можете безопасно перемещать файлы с одной машины на другую.

RTFM

Как и в случае любых утилит, после ознакомления с базовыми приемам использования, описанными в данной статье, вам все же стоит ознакомиться с их замечательными страницами руководств (RTFM). Страница руководства безопасной командной оболочки (ssh) открывается с помощью команды man ssh, страница руководства утилиты для безопасного копирования файлов (scp) — с помощью команды man scp. Обе упомянутые страницы руководств содержат гораздо больше информации о рассмотренных утилитах, чем вы можете предположить, прочитав данную статью.

Если вы ищите безопасный механизм для управления удаленными машинами, вы, без сомнения, можете остановиться на утилитах ssh и scp. После того, как вы в совершенстве освоите их, вы сможете осуществлять удаленное (и безопасное) администрирование машин с адресами, отличающимися от 127.0.0.1.