Как становится понятно из названия, SSH сервер основан на работепротокола SSH. Существуют несколько реализация данного сервера (dropbear, lsh-server, openssh-server, ssh и др.), в данной статье я буду рассматривать реализацию сервера OpenSSH на Debian Squeeze. Протокол SSH изначально являлся проприетарным коммерческим и пережил 2 реализации. В 1995 г. была разработана версия протокола SSH-1, в 1996 г. разработали версию SSH-2(используется по настоящее время), не совместимую с SSH-1.
SSH — это протокол сеансового (транспортного) уровня, использует для работы 22/tcp порт. OpenSSH предлагает два уровня идентификации: идентификация сервера и идентификацию клиента (пользователя). В-первых, клиент проверяет, что подсоединен к требуемому серверу. Затем OpenSSH шифрует все данные, передаваемые между системами. Во-вторых, как только защищенная шифрованная связь установлена, SSH убеждается в авторизации пользователя для входа в систему (или для копирования файлов с системы и на нее). Как только система сервер и пользователь проверены, SSH разрешает службам пользоваться созданным соединением. Установленное соединение может использоваться для интерактивной работы в bash (утилита ssh), удаленного выполнение каких-либо команд (опять же утилита ssh и scp), а так же туннелирование портов TCP/IP.
В своей работе SSH задействует следующие типы шифрования: аутентификация производится с использованием асимметричного шифрования с открытым ключом (версия SSH1 - RSA, SSH2 - RSA/DSA). Обмен данными во время установленного соединения -симметричное шифрование (IDEA - патентованный, DES, triple DES (3DES), ARCFOUR, BLOWFISH, CAST128, AES/Rijndael). Целостность переданных данных проверяется с помощью CRC32 в версии SSH1 и HMAC-SHA1/HMAC-MD5 - в SSH2. Для сжатия шифруемых данныхможет использоваться алгоритм LempelZiv (LZ77), который обеспечивает такой же уровень сжатия, что и архиватор ZIP. Спецификация протокола SSH-2 описана в RFC 4251.