Что такое SSH SSH (Secure Shell) — это сетевой протокол, предназначенный для безопасного удалённого управления компьютерами и устройствами через небезопасные сети. Администраторам сетей часто приходится выполнять удаленную настройку различного сетевого оборудования и программного обеспечения. Это могут быть маршрутизаторы, веб-серверы, файловые серверы, почтовые серверы и так далее. Для решения этих задач в 1972 году был разработан универсальный протокол Telnet (cокр. от англ. Teletype Network). Он до сих пор встраивается во все операционные системы. Этот протокол позволяет администратору подключаться к любому серверу по сети и выполнять на нем консольные команды - команды командной строки в случае Windows или команды терминала в случае Linux, как будто работает непосредственно на этом удаленном хосте. Удобно. Telnet использовался не только для удалённого доступа к командной строке, но и для передачи файлов, ASCII-графики и даже многопользовательских сетевых игр, таких, как «Shades of Gray», «Crusify:The Chosen», «Магия и Сталь», «Неронис» и другие. Удаленное администрирование с помощью командной строки не теряет актуальность и в наши дни, так как, в отличие от веб-интерфейса, предоставляет полный доступ к функциональным возможностям устройства, хотя и требует от специалиста навыков работы с командной строкой. К сожалению, в протоколе Telnet не предусмотрено использование ни шифрования, ни проверки подлинности данных. Поэтому все пароли и файлы передаются по сети в открытом виде, а подлинность второй стороны, с которой происходит общение, никак не проверяется. В современном мире такой подход несет слишком большие риски. Поэтому в 1995 году был предложен новый протокол SSH версии 1 (англ. Secure Shell — «безопасная оболочка»), который решает те же задачи, но при этом шифрует весь трафик, включая пароли и передаваемые файлы. Сейчас существует множество различных SSH-серверов и клиентских оболочек. Некоторые из них встроены в операционные системы «из коробки». Некоторые могут устанавливаться дополнительно. Все они работают по протоколу SSH, в значительной степени совместимы между собой и позволяют безопасно передавать любую информацию - не только удалённо работать на компьютере через командную оболочку или передавать звуковой поток или видео (например, с веб-камеры), но и создавать зашифрованные тоннели между узлами и использовать сжатие передаваемых данных. Чтобы проверить установлен ли SSH на вашем компьютере под управлением Windows, выполните следующие шаги: Нажмите клавиши Win + R одновременно. Откроется диалоговое окно «Выполнить». В открывшемся окне введите «cmd» без кавычек и нажмите Enter. Откроется окно командной строки. Введите команду «ssh» без кавычек и нажмите Enter. В результате если SSH установлен, вы увидите справку по использованию команды ssh. Если не установлен - сообщение вроде «ssh не является внутренней или внешней командой». Как работает SSH Как говорилось выше, служба SSH использует в своей работе магию криптографии. Вообще, ее можно настроить на использование любого криптографического протокола и алгоритма, но по умолчанию информация передается с помощью асимметричных шифров. Говоря про магию криптографии, мы лишь немного преувеличили, так как криптография позволяет делать удивительные вещи. Например, в концепции асимметричной криптографии у каждого пользователя по два ключа – открытый и закрытый. Одним ключом информация зашифровывается, а другим расшифровывается. Это работает так: открытый ключ можно передавать по незащищенному каналу, и кто угодно может его узнать и зашифровать с его помощью информацию. А вот расшифровать ее можно только закрытым ключом. Закрытый ключ известен только получателю и поэтому только получатель сможет расшифровать информацию. Но и на этом магия не заканчивается. Существуют протоколы, которые позволяют установить зашифрованный канал между двумя абонентами, не договариваясь заранее об общем ключе. Если рассмотреть работу SSH на примере сундука с амбарным замком, то это выглядит так: Отправитель пишет письмо и кладет его в сундук. Сундук запирает с помощью амбарного замка. Ключ вешает себе на шею, а закрытый сундук отправляет Получателю. Получатель получает закрытый сундук. Он не может его открыть, потому что у него нет ключа. Зато он может повесить свой амбарный замок рядом с замком Отправителя и закрыть его на свой ключ. Этот ключ он прячет под подушкой и никому не показывает. Сундук с двумя замками отправляет Отправителю. Отправитель получает сундук с двумя замками. У него есть один из ключей – висит на шее. И он снимает свой замок. Сундук по-прежнему закрыт, но только на один замок Получателя. Этот закрытый сундук отправляется Получателю. Получателю приезжает сундук с замком, который повесил сам получатель и ключ, к которому лежит у него под подушкой. Поэтому ничто не мешает ему открыть сундук и прочитать письмо. Готово! При этом все эти шаги запускаются буквально одной командой, производятся в автоматическом режиме и не требуют от пользователя никаких дополнительных действий. Удобно. Как использовать SSH Настройка сервера: Чтобы сервер был готов принимать безопасные соединения по SSH, сначала нужно убедиться, что на нём установлен и запущен SSH-сервер. В Linux это обычно пакет OpenSSH Server, который можно установить через пакетный менеджер: sudo apt update sudo apt install openssh-server После установки сервис обычно запускается автоматически. Проверить его состояние можно командой: sudo systemctl status ssh Для базовой безопасности рекомендуется настроить конфигурацию SSH. Файл настроек обычно находится по пути /etc/ssh/sshd_config. Там можно: выбрать порт для подключения (по умолчанию 22); запретить вход под пользователем root; включить аутентификацию по ключам вместо пароля; ограничить доступ только определённым пользователям. После внесения изменений сервис нужно перезапустить: sudo systemctl restart ssh Если планируется использовать аутентификацию по ключам, нужно сгенерировать ключи на клиенте (ssh-keygen) и скопировать публичный ключ на сервер в файл ~/.ssh/authorized_keys. После этого сервер будет принимать подключения без ввода пароля, что значительно повышает безопасность. Настройка клиента: Чтобы начать работу с SSH, сначала нужно убедиться, что клиент SSH установлен на компьютере. В Linux и macOS он обычно уже установлен по умолчанию, а в Windows Windows достаточно включить «OpenSSH Client» через параметры системы или скачать PuTTY. Проверить наличие клиента можно командой: ssh -V Если она возвращает версию SSH, значит всё готово. Теперь можно использовать все возможности SSH: Удалённое управление сервером Чтобы подключиться к серверу, используйте команду: ssh username@server_address где username - ваше имя пользователя на сервере, а server_address - его IP-адрес или доменное имя. После ввода пароля вы получаете доступ к командной строке сервера и можете выполнять любые разрешённые команды. Безопасная передача файлов (SCP/SFTP) Для копирования файлов на сервер используйте команду: scp localfile.txt username@server_address:/remote/path/ Аналогично можно скачивать файлы с сервера: scp username@server_address:/remote/path/file.txt /local/path/ Создание туннелей (Port Forwarding) SSH-туннели позволяют безопасно пересылать трафик через защищённое соединение: ssh -L 123:internal-server:1234 username@server_address Эта команда создаёт туннель: все обращения из интернета на порт 8080 сервера будут перенаправлены на порт 80 внутреннего сервера через SSH. Это удобно для доступа к внутренним сервисам, недоступным напрямую из интернета. Запуск графических приложений (X11 Forwarding) Если на сервере есть графическая программа, её можно запускать удалённо через SSH с поддержкой X11 с помощью команды: ssh -X username@server_address После подключения вы сможете запускать приложения с графическим интерфейсом на сервере, а окна будут отображаться на вашем локальном компьютере. Также для более удобной и безопасной работы часто используют ключи SSH вместо пароля. Их можно сгенерировать командой: ssh-keygen После чего на локальном компьютере появятся два файла: приватный ключ, который нужно хранить в безопасности, и публичный ключ, который копируется на сервер (см. выше). С помощью ключей можно подключаться к серверу без ввода пароля, а соединение при этом остаётся защищённым. Заключение Мы рассмотрели лишь малую часть возможностей, предоставляемых протоколом SSH. Этот протокол также позволяет проводить проверку абонентов по паролю, по ключам, с применением многофакторной аутентификации; проверять целостность данных и защищать их от подмены; создавать множество параллельных каналов в рамках одной сессии; запускать графические приложения с выводом на локальный экран; скрывать факт свой работы на удаленном хосте и так далее. SSH уже много лет является неотъемлемым инструментом системных администраторов. Придя много лет назад на замену устаревшему протоколу Telnet он продолжает развиваться и по сей день. Благодаря использованию современных алгоритмов шифрования, SSH позволяет решать широкий спектр задач от обеспечения защищённого удалённого администрирования систем и безопасной передачи отдельных файлов до создания зашифрованных туннелей между узлами. Простота использования, широкое распространение благодаря предустановке в подавляющем большинстве операционных систем и высокая степень защиты сделали SSH стандартом для администрирования серверов и сетевого оборудования. Сегодня SSH - это не просто инструмент удалённого управления, а фундаментальная технология, обеспечивающая безопасность современных ИТ-инфраструктур. Автоматическая киберзащита для вашего бизнеса Регулярный контроль чувствительных данных компании, понятные отчёты и экспертная поддержка с точными рекомендациями. запросить демо Советы по ИБ на практике Поделиться