Skip to content

Home Безопасность в Linux Организация удаленного доступа с помощью OpenSSH
Организация удаленного доступа с помощью OpenSSH

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

С помощью Интернета и некоторых вспомогательных программ мы можем получить достук любому удаленному компьютеру, при условии, что он соответствующим образом настроен. В UNIX/Linux в свое время был очень популярный протокол Telnet. Только представьте, что вы уехали в долгожданный заслуженный отпуск, а ваше начальство сообщает, что с сервером что-то не-то, и слезно просит исправить ситуацию. Если вы не уехали на необитаемый остров, то все, что вам нужно сделать, — это добраться до компьютера, подключенного к Интернету. В каждой сетевой операционной системе — будь то FreeBSD или Windows 95 (которую, впрочем, сложно назвать сетевой) есть telnet-клиент. Данная программа так и называется — telnet (в Windows — telnet.exe).

После подключения с помощью telnet к удаленному компьютеру вы може работать с ним как обычно. В окне telnet-клиента вы увидите как бы KOHCOJU. удаленного компьютера — вы будете вводить команды и получать результатi их выполнения — все так, если бы вы работали непосредственно за удален ным компьютером.

Но технологии не стоят на месте, и протокол Telnet устарел. Сейчас им практически никто не пользуется. На его смену пришел SSH (Secure Shell). SSH, как видно из названия, представляет собой безопасную оболочку. Главное отличие от telnet состоит в том, что все данные (включая пароли доступа к удаленному компьютеру, передаваемые по SSH файлы) передаются в зашифрованном виде. Во времена telnet участились случаи перехвата паролей и другой важной информации, что и стало причиной создания SSH.

SSH использует следующие алгоритмы для шифрования передаваемых данных: BlowFish, 3DES (Data Encryption Standard), IDEA (International Data Encryption Algorithm) и RSA (Rivest-Shamir-Adelman algorithm). Самыми надежными являются алгоритмы IDEA и RSA. Поэтому если вы передаете действительно конфиденциальные данные, лучше использовать один из этих алгоритмов.

В состав любого дистрибутива Linux входит как SSH-сервер (программа, которая и обеспечивает удаленный доступ компьютеру, на котором она установлена) и SSH-клиент (программа, позволяющая подключаться к SSH-серверу). Для установки SSH-сервера нужно установить пакет openssh (это разновидность SSH-сервера), а для установки SSH-клиента — пакет openssh-clients.

Если у вас на рабочей станции установлена ОС Windows и вам нужно подключиться к SSH-серверу, запущенному на Linux-машине, то по адресу http://www.cs.hut.fi/ssh/ вы можете скачать Windows-клиента для SSH. Нужно отметить, что Windows-клиент, в отличие от Linux-клиента, небесплатен, и за него нужно заплатить, если не ошибаюсь, целых 149 американских долларов. Не очень дешево, поэтому на отпуск лучше захватить ноутбук с установленным Linux.

Работать с SSH-клиентом очень просто. Для подключения к удаленному компьютеру введите команду:

ssh [опции] <адрес_удаленного_компьютера>

В качестве адреса можно указать как IP-адрес, так и доменное имя компьютера. В табл. приведены часто используемые опции программы ssh.

Опции программы ssh

Опции программы ssh

Опции программы ssh


Теперь можно приступить к конфигурированию SSH-сервера. Если вы используете OpenSSH (в большинстве случаев так оно и есть), все настройки SSH-сервера хранятся в одном-единственном файле — /etc/sshd_config, а настройки программы-клиента — в файле /etc/ssh_config. Настройки программы клиента обычно задавать не нужно, поскольку они приемлемы по умолчанию. На всякий случай вы можете заглянуть в файл /etc/ssh_config — его формат, как и назначение опций (большая часть из них закомментирована), вы поймете без моих комментариев.

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


# $OpenBSD: sshd_config,v 1.72 2005/07/25 11:59:40 niarkus Exp $

# Задает порт, на котором будет работать SSH-сервер. Если директива

# не указана (закомментирована), то по умолчанию используется порт 22

#Port 22

# Директива Protocol позволяет выбрать версию протокола,

# рекомендуется использовать вторую версию

#Protocol 2,1

Protocol 2

# Директива AddressFamily задает семейство интерфейсов, которые должен

# прослушивать SSH-сервер

#AddressFamily any

# Локальный адрес, который должен прослушиваться SSH-серверсм

#ListenAddress 0.0.0.0

# Ключевой файл для протокола SSH версии 1

# HostKey for protocol version 1

HostKey /etc/ssh/ssh_host_key

# Ключевые файлы для второй версии протокола SSH

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

# Время жизни ключа протокола первой версии. Время можно задавать в

# секундах или в часах (постфикс h, например, lh — это 1 час или

# 3600 секунд). По истечении указанного времени ключевой файл

# будет сгенерирован заново

#KeyRegenerationInterval lh

# Разрядность ключа сервера в битах (только для первой версии

# протокола SSH)

#ServerKeyBits 768

# Директивы управления протоколированием (можно не изменять)

#SyslogFacility AUTH

#LogLevel INFO

# Директивы аутентификации

# Время, предоставляемое клиенту для аутентификации.

# Задается в секундах или минутах (1т = 60 секунд).

# Если за это время клиент не аутентифицировал себя,

# соединение будет прекращено

#LoginGraceTime 2m

# Директива разрешает (yes) удаленный доступользователя root

PermitRootLogin yes

# Максимальное количество попыток аутентификации

#MaxAuthTries 6

# Использование RSA (yes)

#RSAAuthentication yes

# Аутентификация с открытым ключом (при значении yes)

#PubkeyAuthentication yes

ttAuthorizedKeysFile  .ssh/authorized_keys

# Использование .rhosts-аутентификации с поддержкой RSA.

# Rhosts-аутентификацию использовать не рекомендуется,

# поэтому по умолчанию для этой директивы указано

# значение по. Если вы все-таки установите значение yes

# для этой директивы, то не

# забудьте указать в файле /etc/ssh/ssh_known_hosts IP-адреса

# компьютеров, которым разрешен достук SSH-серверу.

# Только для первой версии протокола

#RhostsRSAAuthentication no

# Если вы используете вторую версию протокола и хотите разрешить

# Rhosts-аутентификацию, то вам нужно включить директиву

# HostbasedAuthentication, а разрешенные узлы указываются

# в файле ~/.ssh/known_hosts

# HostbasedAuthentication no

# Если вы не доверяете пользовательским файлам ~/.ssh/known_hosts,

# установите значение yes для директивы IgnoreUserKnownHosts.

# Тогда будет использован только

# файл /etc/ssh/ssh_known_hosts

#IgnoreUserKnownHosts no

# Игнорировать файлы -/.rhosts и -/.shosts (рекомендуется установить yes)

#IgnoreRhosts yes

# Следующие директивы не рекомендуется изменять из соображений

# безопасности — они включают аутентификацию по паролю (а не

# IP-адресу компьютера, указанному в файле /etc/ssh/ssh_known_hosts),

# и запрещают использование пустых паролей

#PasswordAuthentication yes

#PermitEmptyPasswords no

# Параметры протокола аутентификации Kerberos

# Рекомендуется использовать RSA-аутентификацию

#KerberosAuthentication no

#KerberosOrLocalPasswd yes

#KerberosTicketCleanup yes

#KerberosGetAFSToken no

# Параметры GSSAPI

#GSSAPIAuthentication no

#GSSAPlCleanupCredentials yes

# Использовать для аутентификации модули РАМ (по умолчанию они

# не используются)

#UsePAM no

# Разрешить ТСР-форвардинг

#AllowTcpForwarding yes

# Использовать порты шлюза

#GatewayPorts no

# Использовать Xll-форвардинг (для запуска XII-приложений)

XllForwarding yes

# Выводить сообщение дня (содержится в файле /etc/motd)

#PrintMotd yes

# Выводить время последней регистрации пользователя

#PrintLastLog yes

# Не обрывать TCP-соединения после выполнения команды по SSH

#TCPKeepAlive yes

# Отключение (значение по) этой опции позволяет немного ускорить

# работу SSH, поскольку DNS не будет использоваться для разрешения

# доменных имен

#UseDNS yes

#    Остальные параметры рекомендуется оставить как есть

#UseLogin no

UsePrivilegeSeparation yes #PermitUserEnvironment no #Conpression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3

#PidFile /var/run/sshd.pid #MaxStartups 10

#Banner /some/path

Subsystem         sftp     /usr/lib/ssh/sftp-server

После установки пакетов openssh и openssh-clients можно приступить к тестированию работы SSH-сервера. Для запуска сервера можно использовать команду:

#    service sshd start

А для останова — ту же команду, но с параметром stop:

#    service sshd stop

Также запустите конфигуратор управления сервисами (drakxservices в Mandriva и system-config-services в Fedora Core) и убедитесь, что сервис sshd запускается при старте системы.

После этого можно ввести команду

ssh 127.0.0.1

для подключения к локальному компьютеру. Можно также подключиться с удаленного компьютера. Если сеть на локальном и удаленном компьютерах настроена правильно, проблем не должно возникнуть.

Комментарии (0)

RSS feed Comments

Написать комментарий

smaller | bigger

busy
 

Регистрация




Top