Что такое 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 в следующих статьях:
- Подключение к VPS или выделенному серверу по SSH в Windows
- Подключение к VPS или выделенному серверу по SSH на macOS
- Настройка аутентификации по 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.