SSH

TCP / IP модель (RFC один тысяча сто двадцать-две)
Прикладной уровень
BGP ? DHCP ? DNS ? FTP ? Gopher ? GTP ? HTTP ? IMAP ? IRC ? NNTP ? NTP ? POP3 ? RIP ? RPC ? RTCP ? RTP ? RTSP ? SDP ? SIP ? SMTP ? SNMP ? SOAP ? SSH ? STUN ? Telnet ? TLS / SSL ? XMPP ?
Сеансовый уровень
ADSP ? H.245 ? iSNS ? NetBIOS ? PAP ? L2TP ? PPTP ? RTCP ? SMPP ? SSH ? ZIP ? SDP ? RPC ? SCP ? (more)
Транспортный уровень
TCP ? UDP ? DCCP ? SCTP ? RSVP ? ECN ? (More)
Сетевой уровень
IP ( IPv4, IPv6) ? ICMP ? ICMPv6 ? IGMP ? IPsec ? (More)
Уровень сетевых интерфейсов
ARP ? RARP ? NDP ? OSPF ? Tunnels ( L2TP) ? MAC-адрес ( Ethernet, DSL, ISDN, FDDI) ? Device Drivers ? (More)
Этот шаблон: пересмотреть ? обсудить ? редактировать

Secure Shell, SSH - сетевой протокол, позволяющий производить удаленное управление компьютером и передачу файлов. Похожий по функциональности с протоколом Telnet и rlogin, однако использует алгоритмы шифрования передаваемой.

Криптографическая защита протокола SSH не фиксированный, возможен выбор различных алгоритмов шифрования. Клиенты и серверы, поддерживающие этот протокол, доступны для различных платформ. Кроме того, протокол позволяет не только использовать безопасный удаленный shell на машине, но и туннелюваты графический интерфейс - X Tunnelling (только для Unix-подобных ОС или приложений, использующих графический интерфейс X Window System). Так же ssh способен передавать через безопасный канал (Port Forwarding) любой другой сетевой протокол, обеспечивая (при надлежащей конфигурации) возможность безопасной пересылки не только X-интерфейса, но и, например, звука.

Поддержка SSH реализована во всех UNIX системах, и на большинстве из них в числе стандартных утилит присутствуют клиент и сервер ssh. Существует множество реализаций SSH-клиентов и для не-UNIX ОС. Большую популярность протокол получил после широкого развития снифер, как альтернативный опасном Телнет решение для управления важными узлами.

Сейчас известно две ветви версий - 1 и 2. Однако ветка 1 остановлены, поскольку в конце 90-х в ней было найдено много уязвимостей, некоторые из которых до сих пор накладывают серьезные ограничения на ее использование, поэтому перспективной (такой, развивающейся) и безопасной является версия 2.


SSH (англ. Secure SHell - "безопасная оболочка" [1]) - сетевой протокол прикладного уровня, позволяющий проводить удаленное управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Похожий по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаются пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.

SSH позволяет безопасно передавать в незащищенной среде практически любой другой сетевой протокол. Таким образом, можно не только удаленно работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры) [2]. Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удаленного запуска клиентов X Window System.

Большинство хостинг-провайдеров за определенную плату предоставляют клиентам доступ к их домашнему каталогу по SSH. Это может быть удобно как для работы в командной строке, так и для удаленного запуска программ (в том числе графических приложений).

 Стандарты и программные реализации 

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

В 2006 году протокол был утвержден рабочей группой IETF в качестве Интернет-стандарта.

Однако, в некоторых странах (Франция, Россия, Ирак и Пакистан) до сих пор требуется специальное разрешение в соответствующих структурах для использования определенных методов шифрования, включая SSH. См. закон Российской Федерации "О федеральных органах правительственной связи и информации" (закон утратил силу с 1 июля 2003 года в связи с принятием федерального закона от 30.06.2003 № 86-ФЗ).

Распространены две реализации SSH: собственническая коммерческая и бесплатная свободная. Свободная реализация называется OpenSSH. До 2006 года 80% компьютеров сети Интернет использовало именно OpenSSH. Собственническая реализация разрабатывается организацией SSH Inc., Она бесплатна для некоммерческого использования. Эти реализации содержат практически одинаковый набор команд.

Протокол SSH-2, в отличие от протокола telnet, устойчивый к атакам прослушивания трафика ("снифинг"), но неустойчив к атакам "человек посередине". Протокол SSH-2 также устойчив к атакам путем присоединения посредине (англ. session hijacking) - невозможно включиться в уже установленную сессию или перехватить ее.

Для предотвращения атак "человек посередине" при подключении к хосту, ключ которого еще не известен клиенту, клиентское ПО показывает пользователю "слепок ключа" (key fingerprint). Рекомендуется тщательно проверять показываемый клиентским ПО "слепок ключа" (key fingerprint) со слепком ключа сервера, желательно полученным по надежным каналам связи или лично.

Поддержка SSH реализована во всех UNIX-подобных системах, и на большинстве из них в числе стандартных утилит присутствуют клиент и сервер ssh. Существует множество реализаций SSH-клиентов и для не-UNIX ОС. Большую популярность протокол получил после широкого развития анализаторов трафика и способов нарушения работы локальных сетей, как альтернативное опасном протокола Telnet решение для управления важными узлами.

Для работы по SSH нужен SSH-сервер и SSH-клиент. Сервер прослушивает соединения от клиентских машин и при установлении связи производит аутентификацию, после чего начинает обслуживание клиента. Клиент используется для входа на удаленную машину и выполнения команд.

Для соединения сервер и клиент должны создать пары ключей - открытых и закрытых - и обменяться открытыми ключами. Обычно используется также и пароль.

 SSH-серверы 
 * BSD: OpenSSH Linux: dropbear, lsh-server, openssh-server, ssh Windows: freeSSHd, copssh, WinSSHD, KpyM Telnet / SSH Server, MobaSSH, OpenSSH через Cygwin [3] 

SSH-клиенты и оболочки

 GNU / Linux, * BSD: kdessh, lsh-client, openssh-client, putty, ssh, Vinagre MS Windows и Windows NT: PuTTY, SecureCRT, ShellGuard, Axessh, ZOC, SSHWindows, ProSSHD, XShell MS Windows Mobile: PocketPuTTy, mToken , sshCE, PocketTTY, OpenSSH, PocketConsole Mac OS: NiftyTelnet SSH Symbian OS: PuTTY Java: MindTerm, AppGate Security Server J2ME: MidpSSH iPhone: i-SSH, ssh (в комплекте с Terminal) Android: connectBot Blackberry: BBSSH MAEMO 5: OpenSSH 
 Рекомендации по безопасности использования SSH 
 Запрет удаленного root-доступа. Запрет подключения с пустым паролем или отключение входа по паролю. Выбор нестандартного порта для SSH-сервера. Использование длинных SSH2 RSA-ключей (2048 бит и более). Системы шифрования на основе RSA считаются надежными, если длина ключа не менее 1024 бит. [4] Ограничение списка IP-адресов, с которых разрешен доступ (например, настройкой файервола). Запрет доступа с некоторых потенциально опасных адресов. Отказ от использования распространенных или широко известных системных логинов для доступа по SSH. Регулярный просмотр сообщений об ошибках аутентификации. Установка систем обнаружения вторжений (IDS - Intrusion Detection System). Использование ловушек, подделывают SSH-сервис (honeypots). Примеры использования SSH 

Команда подключения к локальному SSH-сервера из командной строки GNU / Linux или FreeBSD для пользователя pacify (сервер прослушивает нестандартный порт 30000):

$ Ssh-p 30000 pacify@127.0.0.1

Генерация пары ключей (в UNIX-подобных ОС) осуществляется командой

$ Ssh-keygen

Генерация пары SSH-2 RSA-ключей длиной 4096 бита программой puttygen под UNIX-подобными ОС:

$ Puttygen-t rsa-b 4096-o sample

Некоторые клиенты, например, PuTTY, имеют и графический интерфейс пользователя.

Для использования SSH в Python существуют такие модули, как python-paramiko и python-twisted-conch.

 SSH-туннелирования 

SSH-туннель - это туннель, создаваемый с помощью SSH-соединения и используется для шифрования тунельованого данных. Используется для того, чтобы обезопасить передачу данных в Интернете (аналогичное назначение имеет IPsec). Особенность заключается в том, что шифрованный трафик какого-либо протокола шифруется на одном конце SSH-соединения и расшифровывается на другом.

Практическая реализация может выполняться несколькими способами:

 Созданием Socks-прокси для программ, не умеющих работать через SSH-туннель, но могут работать через Socks-прокси Использованием приложений, которые умеют работать через SSH-туннель. Созданием VPN-туннеля, подходит практически для любых приложений. Если программа работает с одним определенным сервером, можно настроить SSH-клиент таким образом, чтобы он пропускал через SSH-туннель TCP-соединения, приходящие на определенный TCP-порт машины, на которой запущен SSH-клиент. Например, клиенты Jabber подключаются по умолчанию на порт 443. Тогда, чтобы настроить подключение к серверу Jabber через SSH-туннель, SSH-клиент настраивается на перенаправление подключений с любого порта локальной машины (например, из порта 4430) на удаленный сервер (например, jabber.example.com и порт 443): 

$ Ssh-L 4430: jabber.example.com: 443 somehost

В данном случае Jabber-клиент настраивается на подключение к порту 4430 сервера localhost (если ssh-клиент запущен на той же машине что и Jabber-клиент).

Для создания ssh-туннеля необходима машина с запущенным ssh-сервером и доступом к jabber.example.com. Такая конфигурация может использоваться в случае, если с локальной машины доступ к jabber.example.com закрыт файерволом, но есть доступ к некоторому ssh-серверу, у которого ограничения доступа в Интернет отсутствуют.

 Техническая информация о протоколе 

SSH - это протокол сеансового уровня. SSH-сервер обычно прослушивает соединения на TCP-порту 22. Спецификация протокола SSH-2 содержится в RFC 4251. Для аутентификации сервера в SSH используется протокол аутентификации сторон на основе алгоритмов электронно-цифровой подписи RSA или DSA. Для аутентификации клиента также может использоваться ЭЦП RSA или DSA, но допускается также аутентификация с помощью пароля (режим обратной совместимости с Telnet) и даже ip-адреса хоста (режим обратной совместимости с rlogin). Аутентификация по паролю наиболее распространена, она безопасна, потому что пароль передается по зашифрованному виртуального канала. Аутентификация по ip-адресу опасна, эту возможность чаще отключают. Для создания общего секрета (сеансового ключа) используется алгоритм Диффи - Хеллмана (DH). Для шифрования передаваемых данных используется симметричное шифрование, алгоритмы AES, Blowfish или 3DES. Целостность переданных данных проверяется с помощью CRC32 в SSH1 или HMAC-SHA1/HMAC-MD5 в SSH2.

Для сжатия шифруемых данных может использоваться алгоритм LempelZiv (LZ77), который обеспечивает такой же уровень сжатия, и архиватор ZIP. Сжатие SSH включается только по запросу клиента, и на практике используется редко. [Править] См. также b: Защита конфиденциальных данных и анонимность в интернете в Викиучебник?

 SFTP SCP SSL TLS 


Стандарты

 RFC 4250 (англ.) - The Secure Shell (SSH) Protocol Assigned Numbers RFC 4251 (англ.) - The Secure Shell (SSH) Protocol Architecture RFC 4252 (англ.) - The Secure Shell (SSH) Authentication Protocol RFC 4253 (англ .) - The Secure Shell (SSH) Transport Layer Protocol RFC 4254 (англ.) - The Secure Shell (SSH) Connection Protocol RFC 4255 (англ.) - Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints RFC 4256 (англ .) - Generic Message Exchange Authentication for the Secure Shell Protocol (SSH) RFC 4335 (англ.) - The Secure Shell (SSH) Session Channel Break Extension RFC 4344 (англ.) - The Secure Shell (SSH) Transport Layer Encryption Modes RFC 4345 (англ.) - Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol RFC 4419 (англ.) - Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol RFC 4432 (англ.) - RSA Key Exchange for the Secure Shell (SSH) Transport Layer Protocol RFC 4716 (англ.) - The Secure Shell (SSH) Public Key File Format 

SSH-клиенты

 OpenSSH - свободная библиотека и набор утилит для шифрования PuTTY - популярный кроссплатформенный SSH-клиент Сравнение SSH-клиентов (англ.) MidpSSH (англ.) - SSH-клиент для мобильных телефонов 

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

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

См.. также


{{{Alt}}} Это незавершенная статья о компьютерные сети.
Вы можете помочь проекту, исправив и дополнив ее.
п ? в ? р UNIX -команды, запускаемые в режиме командной строки
Файловые системы :
chroot ? dd ? df ? fdisk ? fsck ? mount
Файлы и каталоги :
cat ? chattr ? cd ? chmod ? chown ? chgrp ? cksum ? cmp ? cp ? du ? file ? fuser ? ln ? ls ? lsof ? mkdir ? mv ? pwd ? rm ? rmdir ? split
Процессы :
at ? cron ? exit ? kill ? killall ? nice ? pgrep ? pidof ? pkill ? ps ? sleep ? time ? top ? wait ? watch
Пользователи :
env ? finger ? id ? logname ? mesg ? passwd ? su ? sudo ? uname ? uptime ? w ? wall ? who ? whoami ? write
Сеть :
arp ? dig ? ftp ? ifconfig ? inetd ? ip ? nc ? netstat ? nmap ? nslookup ? ping ? rlogin ? route ? ssh ? tcpdump ? traceroute ? wget
Тексты:
awk ? banner ? comm ? cut ? ed ? ex ? fmt ? head ? iconv ? join ? less ? more ? paste ? sed ? sort ? tac ? tail ? tr ? uniq ? wc ? xargs
Командная строка :
basename ? bash ? bind ? echo ? expr ? false ? printf ? test ? true ? unset
Печать:
lp
Поиск:
Разное:
bc ? cal ? man ? size ? yes