Счетчик

Поисковый анализ сайта
яндекс.ћетрика
Cервер и сайт запущен 2011.02.01 на Debian

Установка и настройка SSH. Регистрация в удаленной системе с помощью SSH

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

Утилиты, связанные с безопасным командным процессором (SSH), не только позволяют получать удаленный доступ и передавать файлы, но и предоставляют функцию шифрования данных, чтобы ваша работа по удаленному администрированию была безопасной. С помощью таких утилит, как Virtual Network Computing (VNC), вы сможете запустить Рабочий стол удаленного сервера на вашем локальном компьютере. Эти и другие функции по удаленному администрированию описаны в данной главе.

Регистрация в удаленной системе и туннелирование с помощью SSH

Старшая сестра Linux — система UNIX — создавалась в университетских сетях. В то время пользователями таких изолированных друг от друга сетей были профессора и студенты, поэтому необходимости в безопасности таких сетей не было.

Приложения и протоколы, созданные в то время (1970-1980-е годы), отражают недостаточное внимание, уделяемое шифрованию и процессу регистрации в удаленной системе. SMTP является отличным примером данного явления. То же можно сказать и об утилитах для удаленной работы первого поколения: telnet, ftp (протокол FTP), rsh (удаленный интерпретатор команд), гср (удаленное копирование), гехес (удаленное выполнение) и rlogin (удаленный вход в систему). Эти утилиты посылали данные о пользователе и трафик посредством обычного текста. По этой причине их опасно использовать в общественно доступных сетях, таких как сегодняшний Интернет. По большей части всеми этими средствами уже не пользуются — их заменили команды SSH (команды ssh, scp, sftp и родственные сервисы).

Хотя для устаревших команд по работе с удаленным доступом все еще находится применение (см. врезку «Использование устаревших средств коммуникации»), большая часть этой главы посвящена SSH-командам, с помощью которых можно удовлетворить все ваши потребности в области удаленной связи.

Использование устаревших средств коммуникации

Несмотря на тот факт, что SSH предоставляет более совершенные средства удаленной коммуникации, устаревшие команды (их иногда называют r-команды) до сих пор включаются во все крупные дистрибутивы Linux. Некоторые из этих инструментов будут работать быстрее, чем соответствующие им команды SSH, так как им не надо проводить шифрование данных. Некоторые администраторы UNIX старой закалки могут иногда пользоваться ими в личных сетях или все еще включать в свои сценарии. Хотя по большей части вы будете просто оставлять в стороне устаревшие команды удаленного доступа, в некоторых случаях tel net может быть полезной.

Команда telnet все еще применяется для связи с некоторыми сетевыми устройствами (маршрутизаторы, переключатели, UPS и пр.), у которых нет мощности для запуска демона ssh. Хотя она несет в себе некоторый риск, связанный с безопасностью, некоторые производители все еще включают поддержку tel net в свои устройства.

Отличным способом применения команды telnet является устранение неполадок связанных с интернет-протоколами POP3, SMTP, HTTP и др. На самом деле данные текстовые протоколы — это автоматические сессии tel net, в течение которых клиент (например, браузер или почтовая программа пользователя) обменивается текстом с сервером. Единственным отличием является используемый TCP-порт. Вот пример использования telnet через HTTP-порт (80) веб-сервера:

image1440

Подобно этому, вы можете настроить команду telnet на работу с портом 25 почтового сервера (SMTP) и 110 (РОРЗ) и использовать необходимые команды для устранения неполадок с электронной почтой. Более подробно применение telnet для устранения неполадок с сетевыми протоколами описывается в книге Linux Troubleshooting Bible (Wiley Publishing, 2004).

Если вы хотите выйти из telnet-сессии, задействуйте ESC-последо-вательность (Ctrl+] по умолчанию). Это прекратит посылку информации с вашей клавиатуры на удаленный компьютер и выведет окно командной строки tel net, где вы можете напечатать qui t для выхода или ?, чтобы увидеть все параметры.

Настройка SSH

На сегодняшний день настоящим многофункциональным инструментом сетевых администраторов является SSH. Команды и сервисы SSH заменяют все старые средства для удаленного доступа и добавляют отличное шифрование данных, открытые ключи и другие функции. Наиболее распространенным воплощением SSH в мире Linux является OpenSSH (http://www.openssh.com) — программа, обслуживаемая проектом OpenBSD. В OpenSSH входят клиентская и серверная части. Для установки сервера OpenSSH выполните следующую команду:

apt-get install openssh-server



Рассмотрим некоторые новые особенности SSH.
-В среде Windows можно использовать утилиты SSH из Linux с помощью Cygwin (http://www.cygwin.com). Если вы уже используете Cygwin (эмулятор среды Linux для Windows), то мы рекомендуем PuTTY (http://www.chiark.greenend.org/uk/sgatatham/ putty). PuTTY — это мощный Telnet/SSH-клиент с открытым кодом доступа.
-Используйте SHH версии 2, где это возможно, так как она наиболее хорошо защищена. Некоторые сетевые устройства, поддерживающие SHH, могут работать только с более ранними, менее безопасными версиями. OpenSSH поддерживает все версии. Некоторые предыдущие версии Ubuntu принимали подключения SSH 1 и SSH 2. Однако новые выпуски работают с версией 2 по умолчанию.
-В Ubuntu выполните команду /etc/init.d/ssh start, чтобы запустить сервис SSH (демон sshd). Для настройки сервиса отредактируйте файл /etc/ssh/ sshd_config.
-Чтобы настроить клиент ssh, отредактируйте файл /etc/ssh/ssh_config.

Если вы предпочитаете использовать графические утилиты для администрирования удаленной Linux-системы, то можете активировать Х11-туннелирование (его также называют X11 Port Forwarding). С включенным X11-туннелированием (как на сервере, так и на клиенте) вы можете запустить приложение X на сервере, и оно будет отображаться на клиенте. Вся передаваемая через это подключение информация зашифрована.

В Ubuntu переадресация портов X11 включена (X11Forwarding yes) на сервере посредствам демона sshd. Вам все же необходимо включать ее на стороне клиента. Чтобы включить переадресацию X11 на клиенте в рамках одной сессии, подключитесь с помощью следующей команды:

ssh -x blabla(login)@server



Чтобы включить переадресацию XII на постоянной основе для всех пользователей, добавьте строку ForwardXll yes в файл /etc/ssh/ssh_config. Чтобы переадресация X11 постоянно была активна для определенного пользователя, добавьте строку в файл этого пользователя ~.ssh/config. Как только эти установки были заданы, параметр -X больше не нужен для запуска X11-туннелирования. Выполните команду ssh, как обычно, для подключения к удаленной системе. Для проверки работы туннелирования после установки соединения с удаленной машиной с помощью ssh запустите команду xclock, и данное приложение запустится на Рабочем столе вашего клиента.

SSH-туннелирование — это отличный способ безопасного использования удаленных графических утилит!

Использование команды ssh для удаленного входа в систему

Для безопасного входа в удаленную систему вы можете использовать один из двух возможных синтаксисов указания имени пользователя:

ssh -i blabla(login) server


или

ssh  blabla(login)@server



Однако команды scp и sftp, поддерживают только синтаксис user@server, поэтому мы рекомендуем привыкнуть именно к нему. Если вы не укажете имя пользователя, то ssh попытается подключиться с тем именем, под которым вы находитесь в системе. Если во время подключения вы захотите самостоятельно прервать ssh-сессию, наберите ESC-последовательность (- ).

Доступ к SSH через другой порт

По причинам, связанным с безопасностью, удаленный хост-компьютер может указать другой порт для работы SSH-сервиса, нежели порт 22, который используется по умолчанию. При таких обстоятельствах используйте параметр -р для связи с этим сервисом:

ssh -p 1245 blabla@server подключение идет по порту 1245



Использование SSH для туннелирования (X11 Port Forwarding)

Если SSH-туннелирование настроено, как показано выше, то сервис SSH перенаправляет клиенты X Window System на ваш локальный монитор. Однако тунне-лирование можно использовать и с другими TCP-протоколами.

image1450

Туннелирование для удаленного администрирования принтеров CUPS. X11 

это не единственный протокол, который работает с переадресацией. Вы можете задать переадресацию на любой TCP-порт с помощью SSH. Это отличный способ быстрой и легкой настройки безопасных туннелей. На стороне сервера не требуется никакой настройки.

Туннелирование для клиентов X11. Следующая последовательность команд демонстрирует запуск SSH-сессии, а затем открытие нескольких Х-приложений, которые должны появиться в вашей локальной рабочей области:

Например, myserver является сервером принтеров с включенным пользовательским веб-интерфейсом сервиса CUPS (работающим через порт 631). Этот графический интерфейс доступен только с локальной машины. На текущем клиентском компьютере мы создаем туннель к этому сервису с помощью команды ssh со следующими параметрами:

ssh -L 1245:localhost:631 server



Этот пример устанавливает переадресацию порта 1234 клиентской части на порт 631 на сервере. Теперь мы можем открыть http://localhost:1234 на компьютере-клиенте. Этот запрос будет перенаправлен команде cupsd, которая ожидает сигнала через порт 631 на сервере.

Переадресация интернет-сервисов. Рассмотрим еще один пример использования SSH-туннелирования. Когда ваша локальная машина не имеет доступа к Интернету, но может подключиться к другому компьютеру (myserver) с активным интернет-соединением. Следующий пример позволяет посетить сайт Google.com (HTTP, TCP порт 80) через SSH-подключение к компьютеру по имени myserver, который подключен к Интернету:

ssh -L 1245:google.com:80 server



При использовании этого примера любое подключение к локальному порту 12345 переадресовывается через SSH-туннель к myserver, который, в свою очередь, открывает подключение к Google.com через порт 80. Теперь вы можете зайти на http://localhost:12345 и использовать myserver как ретранслятор сайта Google.com. Поскольку вы используете команду shh для переадресации порта, а не для получения интерпретатора команд на сервере, то можете добавить параметр -N, чтобы предотвратить выполнение удаленных команд:

ssh -L 1245:google.com:80 -N server



Применение SSH в качестве прокси-сервера SOCKS

Предыдущий пример демонстрирует, что вы можете переадресовать порт от клиента к компьютеру, отличному от сервера. В реальности лучшим способом вывести трафик браузера из вашей локальной сети через кодируемый туннель является использование встроенной в SSH функции прокси-сервера SOCKS. Например:

ssh -D 1245 server



Динамический параметр (-D) ssh позволяет войти в myserver (как обычно). Пока подключение активно, все запросы, отправленные порту 12345, переадресовываются на myserver. Далее установите прокси-сервер SOCKS v5 в браузере как localhost: 12345, и вы будете готовы к его использованию. Не вводите ничего в поля HTTP и других протоколов. Они все работают через SOCKS. На рисунке показано окно настройки подключений Firefox.

image1460

Используйте окно настройки подключений FIrefox для определения параметров прокси-сервера

Для проверки настроек отключите сессию ssh и зайдите на любой сайт. Браузер должен выдать сообщение об ошибке прокси-сервера.

Выбрав команду Connection > SSH > Tunnels (Подключение > SSH > Туннели) в Putty, вы можете реализовать такую же переадресацию и в среде Windows.

SSH-аутентификация с использованием открытого ключа

До сих пор мы использовали команду ssh с аутентификацией по умолчанию. Команда также поддерживает аутентификацию с использованием открытого ключа. Это имеет несколько преимуществ.
-Автоматический вход в систему для сценариев и процессов стоп. Установив пустую фразу-пароль, вы можете использовать ssh в сценариях для автоматического входа в систему. Хотя это и удобно, но небезопасно, так как любой, кто получит доступ к вашему файлу с ключом, может подключиться к любой машине, к которой вы имеете доступ. Настройка автоматического входа в систему также может осуществляться с помощью фразы-пароля и агента по работе с ключами. Как показано ниже, это компромисс между удобством и безопасностью.
-Двухфакторная аутентификация. При использовании ключа с фразой-паролем для интерактивного входа в систему аутентификация проводится по двум факторам (ключ и фраза-пароль) вместо одного.
-Вход в систему с использованием открытых ключей. Рассмотрим процесс установки связи между двумя Linux-системами на основе ключа. В следующих примерах мы используем пустые фразы-пароли, не применяя имя пользователя и пароль. Если вы желаете защитить ключ с помощью пароля, то просто введите его во время первого шага (создание пары ключей).

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

image1462

Обратите внимание, что при каждом приглашении к действию вы нажимали Enter для создания файла ключа, используемого по умолчанию и для ввода (подтверждения) пароля. Теперь у вас есть частный ключ, который должен храниться в безопасном месте, в особенности если он не был защищен паролем.

Кроме того, у вас есть открытый ключ (id_rsa.pub), который был создан предыдущей командой. Открытый ключ должен быть установлен на хост-компьютерах, к которым вы хотите подключаться. Содержимое файла ~/.ssh/id_rsa.pub нужно скопировать (безопасно) в -/.ssh/authorized_keys2 для пользователя, который будет использовать ssh на удаленном компьютере. Файл authorized_keys2 может содержать несколько ключей, если несколько пользователей использовали ssh для подключения к этой учетной записи.

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

cd 
mkdir .ssh
chmod 700 .ssh


Далее копируйте (безопасно) файл открытого ключа с клиента и поместите в файл авторизированных ключей на сервере. Это можно сделать с помощью команды scp. Предположим, что имя клиентской системы — myclient, а пользователь — chris. Введите на сервере следующее:

image1466

Эта процедура также может быть выполнена путем редактирования текстового файла -/.ssh/authorized_keys2 на сервере и копирования/вставки открытого ключа с компьютера клиента. Убедитесь, что передача происходит безопасно через ssh, и не вставляйте никаких переносов на новую строку при записи ключа. Полный ключ должен помещаться на одной строке, даже если он выходит за пределы экрана.

Затем вы можете просто выполнять команду ssh с компьютера-клиента (применяя учетные записи пользователей, для которых проводили настройку), и сервер будет использовать ключ. Если вы установите фразу-пароль, то у вас будут ее требовать, как обычный пароль.

Сохранение частных ключей для их использования с Flash-носителя. Если вы хотите хранить свой частный ключ в более безопасном месте, нежели жесткий диск, то можете использовать Flash-носитель (его также называют флеш-кой):

image1468

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

Чтобы увидеть, что делает команда ssh-agent, запустите ее без параметров. После запуска появится трехстрочный bash-сценарий:

image1470

Первые две строки вывода должны быть выполнены вашим интерпретатором команд. Скопируйте эти строки в командную оболочку (shell) прямо сейчас. Вы можете избежать этих действий, запустив ssh-agent и приказав интерпретатору команд bash выполнить результат работы команды. Это достигается следующим образом:

image1472

image1474

Далее вы можете добавить ключ, хранящийся на флешке:

image1476

Теперь можно разблокировать ключи и добавлять их в запущенный агент. Допустим, вы уже создали ключ командой ssh-keygen. Теперь добавим ключ, используемый по умолчанию, с помощью команды shh-add:

image1478

image1480

image1482

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

Чтобы удалить один ключ из агента, например находящийся на флешке, запустите команду ssh-add с параметром -d:

Для удаления всех ключей, хранящихся в агенте, используйте параметр -D:

Добавить комментарий


Защитный код
Обновить