Что такое SSH?

Описание защищенной оболочки SSH для удаленного управления сервером.

SSH («безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и передачу файлов. Он шифрует весь трафик, включая передаваемые пароли, что делает его более безопасным, чем протоколы Telnet и rlogin. SSH допускает выбор различных алгоритмов шифрования и имеет реализации для большинства операционных систем.

SSH позволяет передавать через небезопасный канал другие сетевые протоколы, обеспечивая удаленную работу на компьютере через командную оболочку, а также передачу по шифрованному каналу звукового потока или видео. Для этого используется функция Port Forwarding в соединении TCP. Кроме того, SSH может использовать сжатие передаваемых данных для последующей их шифрации, что удобно для удаленного запуска клиентов X Window System.

История и развитие SSH

Первая версия протокола, SSH-1, была разработана в 1995 году исследователем Tatu Yl’nen из Технологического университета Хельсинки. SSH-1 был создан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 году была разработана более безопасная версия протокола, SSH-2, которая не совместима с SSH-1. Протокол приобрел популярность, и к 2000 году его использовало около двух миллионов пользователей.

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

В современных реализациях (включая OpenSSH с ~2017 года) поддержка SSH-1 полностью устранена. Практически все текущее использование основано на SSH-2.

Реализации SSH

Существуют две основные реализации SSH: собственническая коммерческая и бесплатная свободная. Свободная реализация называется OpenSSH. К 2006 году 80% компьютеров в Интернете использовали именно OpenSSH. Собственническая реализация разрабатывается организацией SSH Inc. и бесплатна для некоммерческого использования.

Безопасность SSH

Протокол SSH-2 устойчив к атакам «man-in-middle», в отличие от протокола telnet. То есть, прослушивание трафика, «снифинг», ничего не дает злоумышленнику. Он также устойчив к атакам перехвата сессии (session hijacking) и оатакам подмены DNS (DNS spoofing).

Примеры использования SSH

  • Подключение к локальному SSH-серверу: $ ssh -p 30000 user@127.0.0.1
  • Генерация пары SSH-2 RSA-ключей: $ puttygen -t rsa -b 4096 -o sample

Более детальная информация о подключении по протоколу SSH в следующих статьях:

Некоторые клиенты, например, PuTTY — имеют и графический интерфейс пользователя.
Для использования SSH в Python существуют модули вроде python-paramiko и python-twisted-conch.

Рекомендации по безопасности

  • Запрещение удаленного root-доступа.
  • Запрещение подключения с пустым паролем.
  • Выбор нестандартного порта для SSH-сервера.
  • Использование длинных SSH2 RSA-ключей.

Ссылки

Стандарты

Программы терминального доступа

  • OpenSSH — свободная библиотека и набор утилит для поддержки шифрования.
  • PuTTY — популярный кроссплатформенный SSH-клиент.
  • SecureCRT — SSH-клиент.

Программы доступа к файлам

  • WinSCP — SFTP-клиент для Microsoft Windows.
  • SSH Filesystem — позволяет подключить директорию, доступную на удаленной машине по ssh как локальную директорию в GNU/Linux.
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам