Сетевые технологии

Протокол SSH

SSH (Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов).
Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования.
SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.
Первая версия протокола SSH была разработана в 1995 году. С тех пор были обнаружены некоторые слабые места и программа претерпела ряд существенных изменений.
В 1996 году, вышла вторая версия SSH – 2. Она не совместима с первой версией и, говоря о SSH сегодня, всегда подразумевается SSH – 2. С тех пор SSH не изменила значительно стандарты своей работы и широко используется по сей день.
SSH является коммерческим продуктом и предоставляется на платной основе. Однако повсеместно доступна и ее бесплатная версия, которая носит название OpenSSH.
Не смотря на то, что OpenSSH является лишь одной из версий SSH, она намного чаще используется программистами.

Возможности SSH

  1. Позволяет удаленно работать на компьютере через командную оболочку;
  2. Позволяет осуществлять шифрование с помощью различных алгоритмов;
  3. Так как SSH позволяет безопасно передавать практически любой сетевой протокол, это позволяет передавать по шифрованному каналу звуковые и видео файлы;
  4. Производит сжатие файлов для их последующего шифрования и передачи;
  5. Защищает передачу данных по каналу и предотвращает возможность включения в установленную сессию и перехватить данные.

Необходимое программное обеспечение для работы с SSH

Для работы с SSH необходим SSH-сервер и SSH-клиент.
SSH-сервер принимает соединение от клиентских машин и производит аутентификацию. Способы аутентификации:
  1. По IP адресу клиента;
  2. По публичному ключу клиента;
  3. По паролю клиента.
Примеры SSH-серверов:
  • BSD: OpenSSH
  • Linux: dropbear, lsh-server, openssh-server, ssh
  • Windows: freeSSHd, copssh, WinSSHD, KpyM Telnet/SSH Server, MobaSSH, OpenSSH
SSH-клиент используется для непосредственного входа на удаленный сервер и выполнения различных команд. Примеры SSH-клиентов:
  • GNU/Linux, BSD: kdessh, lsh-client, openssh-client, putty, ssh, Vinagre;
  • MS Windows и Windows NT: PuTTY, SecureCRT, ShellGuard, Axessh, ZOC, SSHWindows, ProSSHD, XShell;
  • Mac OS: NiftyTelnet SSH.

Правила безопасного использования SSH

Необходимо соблюдать несколько правил пользования SSH, чтобы обезопасить свои данные:
  • Запретить возможность удалённого root-доступа;
  • Запретить подключение с пустым паролем или отключение входа по паролю;
  • Необходимо выбирать нестандартный порт для SSH-сервера;
  • Использовать длинные SSH2 RSA-ключи;
  • Необходимо строго ограничить количество IP-адресов, с которых разрешён доступ;
  • Запретить доступ с опасных адресов;
  • Регулярно отслеживать сообщения об ошибках аутентификации;
  • Установить системы обнаружения вторжений (IDS — Intrusion Detection System);
  • Использовать специальные ловушки, подделывающих SSH-сервис (honeypots).

Базовый синтаксис SSH

Синтаксис команды выглядит следующим образом:
$ ssh [опции] имя пользователя@сервер [команда]

Опции команды SSH

  • f — перевести ssh в фоновый режим;
  • g — разрешить удаленным машинам обращаться к локальным портам;
  • l — имя пользователя в системе;
  • n — перенаправить стандартный вывод в /dev/null;
  • p — порт ssh на удаленной машине;
  • q — не показывать сообщения об ошибках;
  • v — режим отладки;
  • x — отключить перенаправление X11;
  • X — включить перенаправление Х11;
  • C — включить сжатие.

Настройка SSH-сервера

В Linux настройки сервера SSH находятся в файле /etc/ssh/sshd_config. По умолчанию ssh работает на порту 22. В файле sshd_config порт задается строчкой:
Port 22
По умолчанию сервер ssh может работать по двум версиям протокола, для совместимости. Чтобы использовать только протокол версии два раскомментируйте строчку:
# Protocol 2
По умолчанию root доступ по ssh разрешен, но такое поведение очень небезопасно, поэтому раскомментируйте строчку:
PermitRootLogin no
Можно разрешить доступ к ssh только для определенного пользователя или группы. Для этого добавьте строчки:
AllowUsers User1, User2, User3
AllowGroups Group1, Group2, Group3

Передача файлов по SSH

Кроме выполнения команд, можно копировать файлы по ssh. Для этого используется утилита scp. Просто укажите файл, который нужно передать, удаленный сервер и папку на сервере:
$ scp /адрес/локального/файла пользователь@хост:адрес/папки
Например:
scp ~/test.txt user@host:documents
Видео по работе с SSH:
Сетевые технологии