Учебно-методические материалы для студентов кафедры АСОИУ

Использование ssh для удаленного управления сервером

Secure SHell является основным средством удаленного управления сетевыми компьютерами под управлением UNIX/Linux. Многие хостинг-провайдеры представляют владельцам сайтов доступ к серверам по протоколу ssh.

Цель работы: Получить начальные навыки работы с удаленным хостом по протоколу ssh.

Задания к работе

  1. С помощью команды ssh определите тип операционной системы, аппаратную платформу и версию ядра сервера (команда uname с соответствующими параметрами) без загрузки оболочки сервера.
  2. С помощью ssh-клиента подключитесь к серверу edu.asoiu c учетной записью student.
  3. Определите, какой каталог является текущим на удаленном сервере. Если он отличается от /home/student, то выполните переход в /home/student.
  4. Определите, какие пользователи, в каких терминалах и с каких ip-адресов подключены к серверу (команда who)
  5. В текущем каталоге создайте каталог ваша_фамилия_транслитом (например, ivanov).
  6. Запустите файловый менеджер mc, просмотрите содержимое текущего каталога.
  7. Завершите работу с файловым менеджером mc.
  8. Завершите сеанс ssh.
  9. Не входя в сеанс ssh, загрузите в ранее созданный вами на сервере каталог произвольный файл (команда scp).
  10. Не входя в сеанс ssh, просмотрите содержимое серверного каталога /home/student .
  11. Cоставить отчет о выполнении этой работы. Загрузить файл отчета с помощью ssh в созданный вами в ходе выполнения этой работы каталог на сервере.

Методические указания

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

Сетевые шлюзы

Подключение локальных сетей к Интернет обычно реализуется через коммуникационный сервер - шлюз (gateway). Такой сервер обычно работает под управлением какой-нибудь версии UNIX (FreeBSD, Debian GNU/Linux, RHEL и т.п.) и имеет как минимум 2 сетевых интерфейса: один внутренний, к которому подключена ЛВС, второй - внешний, обращенный в Интернет. На шлюзе настроена маршрутизация, подняты сервисы NAT и прокси. Опционально могут быть подняты дополнительные сервисы (баннерорезка, учет трафика и т.п.). В руководстве С.Лазаренко «Установка и настройка интернет шлюза на Debian» детально описана процедура развертывания шлюза на основе Debian GNU/Linux (Lenny и Squeeze) с использованием iptables (файрвол+NAT) и SQUID (прокси).

Для управления используются как символьные протоколы (telnet, rlogin, ssh), так и бинарные, поддерживающие графические возможности (много разных). Для выделенных серверов графические средства как правило не используются, поскольку такие серверы не подразумевают использование их как рабочих станций. Это означает, что нет необходимости выделять ресурсы (существенные!) для графического пользовательского интерфейса.

Текстовые протоколы tenet и rlogin просты и функциональны, но небезопасны. Исходя из указанных соображений в текущей работе предполагается освоение удаленного управления UNIX-сервером по протоколу ssh. Следует отметить, что протокол ssh поддерживает и работу с графическим режимом (тунеллирование X-сервера). Более того, протокол ssh позволяет туннеллировать любой сетевой трафик, использующий в качестве транспорта протокол TCP. (Подробности - в спецификациях протокола The Secure Shell (SSH) Protocol Assigned Numbers, RFC 4250, 2006; The Secure Shell (SSH) Protocol Architecture, RFC 4251, 2006; The Secure Shell (SSH) Authentication Protocol, RFC 4252, 2006 и др.)

Для управления сервером по протоколу ssh необходима его поддержка сервером и клиентское ssh-приложение. UNIX-серверы стандартно поддерживают протокол ssh. В качестве клиента как правило используется OpenSSH (вызывается командой ssh). Для Windows имеются клиенты разных производителей, наиболее популярные PuTTY и SecureCRT. В лабораторной работе предполагается использование клиента OpenSSH. Подробности использования этой программы доступны в руководстве man (man 1 ssh).

Некоторые команды файловой системы Linux рассмотрены в лабораторной работе №3 по дисциплине «Открытое ПО»

Подключение к серверу

Для подключения к серверу необходимо выполнить команду ssh, указав в качестве параметров имя пользователя и имя или сетевой адрес сервера:

aag@stilo:~> ssh -l student edu.asoiu // -l student - логин; edu.asoiu - ssh-сервер

Или так:

aag@stilo:~> ssh student@edu.asoiu

Если вы выполните ssh, не задав имя пользователя, то серверу будет отправлено имя текущего локального пользователя.

При первом ssh подключении к удалённой машине, вы увидите подобное сообщение:

The authenticity of host 'edu.asoiu' can't be established.
DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.
Are you sure you want to continue connecting (yes/no)?

Введите yes для продолжения. При этом сервер будет добавлен в ваш список известных серверов, о чём говорит следующее сообщение:

Warning: Permanently added 'edu.asoiu' (DSA) to the list of known hosts.

Затем будет выведено приглашение для ввода пароля удалённого компьютера. После авторизации на сервере пользователь попадает в оболочку UNIX (как правило это одна из версий shell, зависит от настроек сервера) и может приступать к вводу команд, так как если бы работал на локальной машине.

Выполнение команд

Для пользователя выполнение команд на удаленном сервере мало чем отличается от обычной работы с локальными командами и файлами. Приведем несколько примеров:

  1. Определение текущего каталога:
  2. aag@stilo:~> ssh student@edu.asoiu
    Password: // пароль при вводе не отображается
    Last login: Thu Feb 21 11:08:13 2008
    Have a lot of fun... // авторизация прошла успешно
    student@stilo:~> pwd // ввод команды
    /home/student // вывод результатов выполнения
    student@stilo:~> // приглашение оболочки
    
  3. Просмотр списка файлов каталога:
  4. student@stilo:~> ls -ABl
    итого 212
    -rw------- 1 student users 782 Фев 20 12:33 .bash_history
    -rw-r--r-- 1 student users 1177 Сен 27 13:49 .bashrc
    drwx------ 7 student nobody 4096 Окт 21 11:09 .beagle
    drwxr-xr-x 2 student users 4096 Сен 27 13:49 bin
    drwx------ 2 student nobody 4096 Окт 21 10:59 .config
    -rw-r--r-- 1 student nobody 26 Фев 20 04:20 description.txt
    drwxr-xr-x 2 student nobody 4096 Окт 21 10:59 Desktop
    -rw------- 1 student nobody 24 Окт 21 10:59 .dmrc
    drwx------ 2 student users 4096 Сен 29 15:16 Documents
    -rw-r--r-- 1 student users 208 Сен 27 13:49 .dvipsrc
    -rw-r--r-- 1 student users 1637 Сен 27 13:49 .emacs
    ...
    
  5. Выполнение файлового менеджера mc
  6. Редактирование файла в mcedit
  7. Редактор gedit, запущенный из сессии ssh (при установлении соединения с сервером требуется указать параметр -X, и, возможно, дополнительно настроить конфигурацию ssh-сервера)

Команда ssh может применяться для выполнения команд на удалённом компьютере и без загрузки удаленной оболочки. В этом случае требуемая команда передается в качестве параметра ssh:

ssh <hostname> <command>

Например, если вы хотите выполнить команду ls /usr/share/doc на удалённом компьютере edu.asoiu, введите в приглашении оболочки:

ssh edu.asoiu ls /usr/share/doc

Когда вы введёте правильный пароль, на экране появится содержимое /usr/share/doc, и вы вернётесь к своему приглашению оболочки. Следует отметить, что не все команды могут быть выполнены таким образом. Пример отказа при попытке запустить mc:

aag@stilo:~> ssh student@edu.asoiu mc
Password:
Cannot get terminal settings: Недопустимый аргумент (22) // Ошибка! Невозможно получить параметры терминала
TERM environment variable needs set.
aag@stilo:~>

Копирование файлов

Для передачи файлов между компьютерами через защищённое соединение используют команду scp (secure copy).

Для передачи локального файла на удалённый компьютер эта команда используется в виде:

scp localfile username@tohostname:/newfilename

localfile обозначает исходный файл, а комбинация username@tohostname:/newfilename определяет назначение.

Чтобы передать локальный файл somefile на компьютер edu.asoiu под своим именем пользователя, введите в приглашении оболочки (заменив username своим именем):

scp somefile username@edu.asoiu:/home/username

При этом локальный файл somefile скопируется в /home/username/somefile на сервере edu.asoiu.

Для передачи удалённого файла на локальный компьютер используется команда

scp username@tohostname:/remotefile /newlocalfile

remotefile обозначает исходный файл, а newlocalfile - назначение.

В качестве исходных файлов могут быть указаны несколько файлов. Например, чтобы передать содержимое каталога /downloads в существующий каталог с именем uploads на удалённый компьютер edu.asoiu, введите в приглашении оболочки следующую команду:

scp /downloads/* username@edu.asoiu:/uploads/

Завершение сеанса ssh

Для завершения работы по протоколу ssh необходимо выполнить команду exit, которая завершает пользовательский сеанс и прерывает соединение:

...
-rw-r--r-- 1 student nobody 1088 Фев 20 04:18 readme.txt
-rw-r--r-- 1 student nobody 2194 Окт 21 11:04 .recently-used.xbel
drwxr-xr-x 2 student nobody 4096 Окт 21 10:59 .skel
drwx------ 2 student nobody 4096 Сен 27 15:13 .ssh
student@stilo:/etc> exit
logout // сеанс пользователя завершен
Connection to edu.asoiu closed. // соединение закрыто
aag@stilo:~> // возврат в локальную оболочку

Контрольные вопросы

CC-BY-CA Анатольев А.Г., 31.01.2012