Протокол SSH в Ubuntu

Раньше для организации удаленного доступа к консоли сервера использовался протокол telnet. В каждой сетевой операционной системе — будь то FreeBSD или Windows 95 (которую, впрочем, сложно назвать сетевой) — есть telnet-клиент. Данная программа так и называется — telnet (в Windows — telnet.exe).

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

действительно конфиденциальные данные, лучше использовать один из этих алгоритмов.
Для установки SSH-клиента (программы, которая подключается к SSH-серверу) и самого SSH-сервера нужно установить пакеты openssh-client и openssh-server. Данная разновидность SSH-сервера называется OpenSSH. Если вам нужен традиционный сервер SSH, тогда вам следует установить пакет ssh, содержащий и клиента, и сервер.
Если у вас на рабочей станции установлена Windows и вам нужно подключиться к SSH-серверу, запущенному на Linux-машине, то по адресу http:// www.cs.hut.fl/ssh/ вы можете скачать Windows-клиента для SSH. Нужно отметить, что Windows-клиент, в отличие от Linux-клиента, не бесплатен и за него нужно заплатить, если не ошибаюсь, целых 149 американских долларов. Не очень дешево, поэтому в отпуск лучше захватить ноутбук с установленным Linux.
Работать с SSH-клиентом очень просто. Для подключения к удаленному компьютеру введите команду:
ssh [ОПЦИИ] <адрес_удаленного_компыэтера>
В качестве адреса можно указать как IP-адрес, так и доменное имя компьютера. В таблице приведены часто используемые опции программы ssh.

Опция Описание
-с blowfish|3des|des Служит для выбора алгоритма шифрования, при усло­вии, что используется первая версия протокола SSH (об этом позже). Можно указать blowf ish, des или 3des
-с шифр Задает список шифров, разделенных запятыми в по­рядке предпочтения. Опция используется для аторой версии SSH. Можно указать blowf ish, twof ish, arcfour, cast, des и 3des
-f Переводит ssh в фоновый режим после аутентифика­ции пользователя. Рекомендуется использовать для запуска программы Х11. Например: ssh ~£ server xterm
-1 имя_пользователя Указывает пользователя, от имени которого нужно за­регистрироваться на удаленном компьютере. Опцию использовать необязательно, поскольку удаленный компьютер и так запросит имя пользователя и пароль
-р порт Определяет порт SSH-cepaepa (по умолчанию исполь­зуется порт 22)
-q Тихий режим». Будут отображаться только сообщения о фатальных ошибках. Все прочие предупреждающие сообщения в стандартный выходной поток выводиться не будут
-х Отключает перенаправление Х11
-X Задействовать перенапрааление Х11. Полезна при запуске Х11-программ
-1 Использовать только первую версию протокола SSH
-2 Использовать только вторую версию протокола SSH. Вторая версия протокола более безопасна, поэтому при настройке SSH-сервера (см. далее) нужно исполь­зовать именно ее

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

‘ Листинг 22.1. Пример файла конфигурации /etc/ssh/ssh/sshd_config
# Package generated configuration file
# See the sshd(8) manpage for details
# Задает порт, на котором будет работать SSH-сервер. Если директива
# не указана (закомментирована), то по умолчанию используется порт 22 #Port 22

# Локальный адрес, который должен прослушиваться SSH-сервером
#ListenAddress 0,0.0.0
# Директива Protocol позволяет выбрать версию протокола,
# рекомендуется использовать вторую версию •Protocol 2,1
Protocol 2

# Ключевые файлы для второй версии протокола SSH HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
# Директива AddressFamily задает семейство интерфейсов, которые должен
# прослушивать SSH-сервер #AddressFamily any
# Время жизни ключа протокола первой версии. Время можно задавать в
# секундах или в часах (постфикс h, например, lh — это 1 час или
# ЗбООсекунд). По истечении указанного времени ключевой файл будет
# сгенерирован заново IKeyRegenerationlnterval lh
# Разрядность ключа сервера в битах (только для 1-ой версии
# протокола SSH) ♦ServerKeyBits 768
# Директивы управления протоколированием (можно не изменять) ISyslogFacility AUTH
tLogLevel INFO
# Директивы аутентификации
# Время, предоставляемое клиенту для аутентификации. Задается в секундах
# или минутах. Если за это время клиент не аутентифицировал себя,
# соединение будет прекращено #LoginGraceTime 2m
# Директива разрешает (yes) удаленный доступ пользователя root PermitRootLogin yes
# Максимальное количество попыток аутентификации #MaxAuthTries б
# Использование RSA (yes) #RSAAuthentication yes
# Аутентификация с открытым ключом (при значении yes) #PubkeyAuthentication yes ♦AuthorizedKeysFile .ssh/authorized_keys
# Использование rhosts-аутентификации с поддержкой RSA,
# rhosts-аутентификацию использовать не рекомендуется, поэтому по
# умолчанию .для этой директивы указано
# значение по. Если вы все-таки установите значение yes для этой
# директивы, то не забудьте указать в файле
# /etc/ssh/sslL-knownJiosts IP-адреса компьютеров, которым разрешен доступ
# к SSH-серверу. Только для первой версии протокола #RhostsRSAAuthentication по
# Если вы используете вторую версию протокола и хотите разрешить
# rhosts-аутентификацию, то вам нужно включить директиву
# HostbasedAuthentiaation,
# а разрешенные узлы указываются в файле ~/.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_hosta)
# и запрещают использование пустых паролей #PasswordAuthentication yes iPennitEmptyPasswords no

# Параметры протокола аутентификации Kerberos.
# Рекомендуется использовать RSA-аутентификацию #KerberosAuthentication по #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no
# Параметры GSSAPI #GSSAPIAuthentication no #GSSAPICleanupCredentials yes
# Разрешить ТСР-форвардинг #AllowTcpForwarding yes
# Использовать порты шлюза #GatewayPorts no
# Использовать Xll-форвардинг (для запуска Xll-приложений) XllForwarding yes
# Выводить сообщение дня (содержится в файле /etc/motd) #PrintMotd yes
# Выводить время последней регистрации пользователя IPrintLastLog yes
# Не обрывать TCP-соединения после выполнения команды по SSH iTCPKeepAlive yes
# Отключение (значение по) этой опции позволяет немного ускорить работу
# SSH, поскольку DNS не будет использоваться для разрешения доменных имен WseDNS yes
# Остальные параметры рекомендуется оставить как есть ♦UseLogin по
UsePrivilegeSeparat ion yes #PermitUserEnvironment no ♦Compression delayed ItClientAlivelnterval 0

#ClientAliveCountMax 3

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

#Banner /etc/issue.net

Subsystem sftp /usr/lib/openssh/sftp-server

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

После установки пакетов openssh-server и openssh-client можно приступить к тестированию работы SSH-сервера. Для запуска сервера можно использовать команду:
sudo /etc/init.d/ssh start
А для останова — ту же команду, но с параметром stop:
sudo /etc/init.d/ssh stop
После этого можно ввести команду:
ssh 127.0.0.1
для подключения к локальному компьютеру. Можно также подключиться с удаленного компьютера. Если сеть на локальном и удаленном компьютерах настроена правильно, проблем не должно возникнуть.