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








Книги по Linux (с отзывами читателей)

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

Приемы работы в Ubuntu.
Глава 10: Сервер малого офиса / домашнего офиса

Оригинал: "Ubuntu Hacks: Chapter 10 - Small Office/Home Office Server"
Авторы: Кайл Ранкин, Джонатан Оксер, Билл Чайлдерс (Kyle Rankin, Jonathan Oxer, Bill Childers)
Дата публикации: June 2006
Перевод: Н.Ромоданов
Дата перевода: ноябрь 2010 г.

Совет # 95: Дистанционное администрирование вашего сервера

Установите и сконфигурируйте SSH и вы сможете с любого компьютера вашей сети подключаться к вашему серверу и им управлять.

Кроме тех случаев, когда вы выполняете базовую установку или обслуживание на локальном компьютере, сервер Linux, как правило, предназначен для запуска без подключенного монитора. Большинство задач, которые вам нужно выполнять на сервере, можно делать с помощью командной строки, и в настоящее время это делается не через Telnet, а через SSH. SSH позволяет дистанционно входить на ваш сервер и запускать команды, и все это - по зашифрованному каналу. Кроме того, SSH обладает рядом дополнительных функций, которые могут сделать дистанционное администрирование проще.

Первое, что нужно сделать: в Ubuntu (по крайней мере, в версии для ПК) по умолчанию сервер SSH не устанавливается, поэтому вам придется его установить. Чтобы установить пакет openssh-server, воспользуйтесь менеджером пакетов, который вы предпочитаете использовать, или выполните следующую команду:

$ sudo apt-get install openssh-server

Инсталляционные скрипты, входящие в пакет, позаботятся о создании первоначальных ключей RSA и DSA, которые вам потребуются, а также предложат вам хороший вариант конфигурации SSH, который создается по умолчанию. После того, как установка будет завершена, у вас должна появиться возможность войти через сеть с других машин в свою машину, набрав следующее:

$ ssh ip_address

(Замените ip_address с адресом IP или именем хоста вашего удаленного сервера Ubuntu.)

Конфигурирование SSH

Есть один аспект, связанный с настроенным по умолчанию конфигурационным файлом SSH (/etc/ssh/sshd_config), который поставляется с Ubuntu, это то, что в нем разрешено дистанционно входить с правами пользователя root, а также перенаправлять запросы в X11, что создает потенциальные проблемы, касающиеся безопасности. Поскольку в Ubuntu в любом случае учетная запись root по умолчанию отключена, то ничего не стоит отключить эту учетную запись и для дистанционного входа. Просто найдите строку, в которой указано следующее:

PermitRootLogin yes

и измените ее следующим образом:

PermitRootLogin no

Если вы не планируете перенаправлять запросы в X11, можно просто отключить эту возможность. Найдите строку, в которой указано:

X11Forwarding yes

и замените ее строкой:

X11Forwarding no

Как только вы сделаете свои изменения, наберите:

$ sudo /etc/init.d/ssh restart

для того, чтобы загрузить новую конфигурацию.

Перенаправление запросов в X11

Перенаправление запросов в X11 должно быть отключено, если вы не планировали его использовать, но если вы планируете использовать X11, то в результате вы сможете делать некоторые очень интересные вещи. По сути дела, при перенаправлении запросов в X11 можно установить безопасный канал связи между вами и удаленным сервером, через который можно запускать графические приложения. Скорость работы таких приложений может варьироваться в зависимости от скорости подключения к сети. Для того чтобы воспользоваться преимуществами использования X11, просто при подключении к серверу добавьте аргумент -X:

$ ssh -X ip_address

Затем запустите графическую программу, например, xterm (которую, как вы уже поняли, нет большого смысла запускать, поскольку вы уже находитесь в оболочке) или, возможно, Synaptic. Предоставьте приложению некоторое время, если у вас медленное подключение к сети; в конце концов, графическая программа должна появиться на вашем рабочем столе. Эта функция может быть особенно полезна, если для вашего сервера требуется использование сторонних графических программ, например, для управления томами аппаратного RAID или программами резервного копирования, причем вам нужно управлять этими инструментами дистанционно.

Настройка аутентификации без использования пароля

Если вы обнаружили, что вы часто подключаетесь к одной и той же машине, либо вы хотите создать скрипт, который бы выполнял команды на машине, когда вас нет рядом, вы можете настроить аутентификацию без использования пароля. В сущности, для этого на вашей локальной машине требуется создать открытый и закрытый ключи, а затем добавить открытый ключ в конкретный файл конфигурации на удаленной машине. Прежде всего, с помощью программы ssh-keygen сгенерируйте ключи на локальном компьютере:

greenfly@ubuntu:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/greenfly/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/greenfly/.ssh/id_rsa.
Your public key has been saved in /home/greenfly/.ssh/id_rsa.pub.
The key fingerprint is:
b7:db:cc:2c:81:c5:8c:db:df:28:f3:1e:17:14:cd:63 greenfly@ubuntu

(Если вы хотите сгенерировать ключи DSA, то замените в предыдущей команде rsa на dsa.) Обратите внимание на ввод фразы-пароля. Если вы хотите использовать этот ключ для аутентификации без использования пароля, просто нажмите клавишу Enter и не вводите фразу-пароль. Когда программа закончит работу, у вас в вашем директории ~/.ssh/ directory called id_rsa появится два новых файла с названиями id_rsa и id_rsa.pub с секретным и открытым ключом, соответственно. Теперь, по соображениям безопасности, задайте права доступа к файлу id_rsa таким образом, чтобы его мог читать только ваш пользователь и вы не должны предоставлять к нему общий доступ каким-либо другим пользователям, поскольку последние могут воспользоваться этим ключом для доступа к любой машине, защищенной вашим ключом. Общий доступ следует разрешить только для открытого ключа, который будет использован серверами для дистанционного к ним доступа без использования пароля. Для этого скопируйте файл id_rsa.pub на удаленный компьютер и добавьте его содержимое в файл ~/.ssh/authorized_keys. Вы можете выполнить эту операцию поэтапно за нескольких шагов, либо можете воспользоваться одной приведенной ниже строкой и сделать все за один раз:

$ ssh user@remotehost "cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub

Замените user@remotehost на имя вашего пользователя и имя хоста удаленного сервера. Вам будет предложено еще один последний раз ввести пароль, а затем ключ будет добавлен на удаленном хосте в файл authorized_keys. Теперь вы можете использовать команду ssh для доступа к удаленному компьютеру без использования пароля.

Подсказка

Если вы при создании ключа введете фразу — пароль, она будет у вас запрашиваться каждый раз, когда вы будете входить в систему. Вы можете сделать этот шаг почти таким же удобным, как и при беспарольном входе, если на вашем локальном компьютере выполните команду ssh-agent bash; вы запустите оболочку bash под управлением агента SSH. Затем с помощью команды ssh-add вы можете добавить к агенту ваш ключ. Вам будет предложено один раз ввести пароль, а затем вы можете использовать ssh для доступа к remotehost без запроса на ввод пароля, если, конечно, вы не выйдете из этой оболочки, которую вы запустили с помощью команды ssh-agent.

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

Еще одна возможность, которая требуется при администрировании, это копирование файлов между серверами. Хотя вы можете для этого на всех серверах настроить FTP, но это далекое от идеала и потенциально небезопасное решение. В SSH есть возможность копирования файлов с помощью команды scp. В результате вы получите дополнительное преимущество за счет копирования файлов по защищенному каналу; для этого используйте любой вариант с использованием ключей аутентификации, которые вы, возможно, уже создали.

Чтобы скопировать файл на удаленный компьютер, введите следующую команду:

$ scp /path/to/file user@remotehost:  /path/to/destination

Или, если вам нужно скопировать с удаленного компьютера на локальный компьютер, поменяйте местами два аргумента:

$ scp user@remotehost:/path/to/file /path/to/destination

Команда scp поддерживает рекурсию, поэтому, если вам нужно скопировать весь директорий с файлами на удаленный компьютер, используйте параметр -r:

$ scp -r /path/to/directory/ user@remotehost:/path/to/destination/

Если вы пересылаете журнальные или другие хорошо сжимаемые файлы, вы можете воспользоваться аргументом -C. Он включает режим компрессии, который, хотя и увеличит при копировании нагрузку на процессор, должен также увеличить скорость, с которой будут передаваться файлы, в частности, при медленном соединении.

Либо, если вы хотите скопировать файл, но не можете себе позволить занять весь канал передачи данных, используйте параметр -l, который ограничивает используемую ширину пропускания. Укажите за параметром -l максимальное значение полосы пропускания (в килобитах в секунду). Таким образом, чтобы ограничить полосу пропускания значением в 256 Kбит/сек., наберите:

$ scp -l 256 /path/to/file user@remotehost:/path/to/destination

Назад Оглавление Вперед