Открытые незащищенные соединения между устройствами при передаче трафика представляют собой небезопасные каналы связи. Чтобы снизить риск прослушивания или подмены трафика, для выполнения безопасных команд доступа к хосту, выполнения удаленных клиентов и переадресации портов с шифровкой трафика используется протокол SSH.
Что такое SSH
SSH (secure shell - безопасная оболочка) – это защищенный сетевой протокол для удаленного управления сервером через интернет в безопасном режиме. В основе протокола SSH лежит криптография - шифрование канала связи.
Иными словами, SSH позволяет выстроить так называемый SSH-туннель, на одном конце которого данные шифруются и отправляются, а на другом конце - принимаются и расшифровываются. По туннелю данные передвигаются зашифрованными.
Чем отличается SSH-туннель от VPN
Частные виртуальные сети (VPN) и туннели SSH используются с одной и той же целью - они позволяют безопасно «туннелировать» сетевой трафик через зашифрованное соединение. В некоторых отношениях они похожи, но принципы их работы имеют заметные отличия.
VPN предназначены для создания на компьютере клиента нового сетевого соединения. Как правило, это делается из соображений конфиденциальности или для шифрования трафика. Весь сетевой трафик на таком компьютере будет проходить через VPN вместо обычного сетевого соединения. Но переход на VPN не означает автоматического подключения к удаленной машине.
SSH представляет собой технологию удаленного подключения к терминалу или командной строке на другом компьютере. В отличие от VPN, SSH проще в настройке, но шифрование информации о сетевом трафике каждый раз требуется настраивать вручную. В этом отношении VPN удобнее в применении, хотя его настройка выполняется сложнее.
Для чего используется SSH-туннель
Чаще всего SSH-туннель используется для удаленной работы с операционной системой или переноса большого количества файлов - в частности, для:
- передачи данных (почта, видео, изображения и другие файлы) через защищённое соединение;
- удаленного запуска программ и выполнения команд на сервере через командную строку;
- сжатия файлов для удобной передачи данных.
SSH-туннель состоит из двух компонентов:
- SSH-сервера – программы для установки связи и выполнения аутентификации с устройством пользователя, установленной на сервере хоста. Аутентификация на сервере может происходить тремя путями - по IP-адресу клиента, по публичному ключу, по паролю клиента. В качестве SSH-сервера могут применяться следующие программы: OpenSSH, freeSSHd, lsh-server, WinSSHD, MobaSSH;
- SSH-клиента – программного обеспечения, которое нужно для интеграции с SSH-сервером и для выполнения на нем различных действий (например, для взаимодействия с различными файлами, редактирования файлов, контроля процесса функционирования SSH, архивирования файлов, взаимодействия с базами данных). В качестве SSH-клиентов могут задействоваться: Vinagre, ZOC, lsh-client, SecureCRT, SSHWindows, OpenSSH, Xshell, i-SSH, PuTTY.
Подключение по SSH применяет логин на сервере, а SSH-пароль является паролем пользователя.
Как это работает
Для шифрования SSH использует специальные ключи, с помощью которых кодируются все передаваемые между клиентом и хостом данные.
В протоколе SSH используются три различных метода шифрования - симметричное, асимметричное, технология хэширования.
При симметричном кодировании один и тот же секретный ключ используется для шифрования и дешифрования пакетов данных и клиента, и хоста. Установка соединения таким способом предполагает специальный алгоритм обмена ключами с предварительным согласованием ключа шифрования и с последующим использованием его на протяжении всей сессии.
Симметричное шифрование
Асимметричное шифрование связано с использованием при авторизации вместо пароля пару «приватный+публичный ключ». Оно применяется в SSH на этапе установки соединения. Публичный ключ используется для шифрования данных (и его можно свободно распространять), а приватный (который нельзя никому показывать и передавать) - для их расшифровки. Алгоритм подключения с асимметричными ключами выглядит так:
- хост и клиент используют свои публичные ключи для генерации общего секретного ключа шифрования сессии;
- затем хост шифрует данные публичным ключом и предлагает клиенту расшифровать их своим приватным ключом;
- если операция успешна, то клиент авторизуется на хосте с соответствующим именем пользователя.
Затем сессия продолжается уже с использованием симметричного шифрования.
Асимметричное шифрование
В отличие от других схем шифрования, хэширование в SSH используется не для дешифровки данных, а для создания уникальных шифрованных ключей для подтверждения сообщений об аутентификации. Эти ключи (хэши) используются в механизме симметричного шифрования SSH-сессии.
Хэширование
Как подключиться по SSH к серверу. Базовые команды для управления сервером
Подключение по SSH к серверу проходит в 3 этапа:
- установка TCP-соединения. TCP – протокол управления передачей данных. С его помощью удаленный сервер и пользователь могут обмениваться данными;
- открытие защищённого канала. Исходя из настроек соединения обе стороны обмениваются информацией о способе шифрования и сжатия данных.
- аутентификация пользователя, которая происходит при помощи публичного ключа. Клиент посылает имя пользователя и свой публичный ключ. У сервера есть список пользователей, которые могут подключаться к нему, и проверка полученного ключа проводится по этому списку. Если клиент указан в списке, сервер генерирует случайное число, шифрует клиента публичным ключом и отправляет его устройству. Клиент расшифровывает число и отправляет его обратно, после чего происходит успешная аутентификация.
Подключенное по SSH устройство пользователя может передавать команды, получать или отправлять файлы. Протокол SSH по умолчанию работает по порту 22.
Чтобы работать с сервером при помощи командной строки Linux, пользователю нужно включить опцию «SSH-доступ» и подключиться к своему серверу при помощи SSH-клиента, используя логин и пароль от личного кабинета. SSH-Linux-клиент предустановлен на всех версиях операционной системы Linux. Также SSH-доступ заранее настроен на серверах под управлением Linux.
Пользователю Linux для применения SSH достаточно запустить терминал (так называется командная строка в Linux) и набрать команду:
ssh user@host
, где user
– это имя пользователя на удаленном сервере;
host
– адрес самого сервера.
Система предложит пользователю ввести пароль, затем произойдет соединение с удаленным компьютером-сервером, и пользователь сможет начать полноценную работу на нем. В случае с асимметричным методом шифрования вводить пароль не требуется, аутентификация происходит посредством сопоставления уникальных ключей между клиентом и сервером.
На платформе Windows для использования протокола SSH разработано специальное программное обеспечение – SSH-клиенты. Наиболее популярным является SSH Windows-клиент PuTTY, поддерживающий все современные стандарты шифрования для SSH. Чтобы им воспользоваться, нужно скачать PuTTY с официального сайта на локальный компьютер. При запуске SSH-клиент PuTTY предложит ввести IP-адрес хоста для подключения. Затем откроется окно терминала и приглашение для ввода имени пользователя и пароля, после чего пользователь соединяется с удаленным сервером.
К самым распространенным базовым командам в SSH относятся:
-
ls
- команда, используемая для отображения всех файлов и каталогов. Ее рекомендуется использовать с опцией -l (ls -l), в таком случае все файлы будут отображены в удобной для пользователя форме с подробными деталями и информацией о них. Еще одна полезная опция -a, она отображает все файлы, включая скрытые файлы/папки (файлы с расширением перед ними, к примеру каталог .ssh); -
cd
- команда для перемещения между каталогами («change directory» - «сменить каталог»). После отображения всех файлов и каталогов при помощи команды ls, пользователь сможет выбрать каталог, в который желает перейти. Для перехода на уровень выше используют команду cd .. (cd пробел и две точки); -
mkdir
(«make directory» - «создать каталог») - команда для создания нового каталога с выбранным именем; -
touch
команда для создания файлов с выбранным расширением; -
rm
- команда для удаления выбранного файла или каталога. Если необходимо удалить каталог и все, что находится внутри него, используется rm -r; -
cat
- команда для отображения содержимого файла; -
pwd
- команда, показывающая текущее положение пользователя в файловой системе; -
cp
- команда для копирования файлов и каталогов. Ее Синтаксис таков: cp [options] source dest (source - файл, который нужно скопировать, dest - расположение файла/папки). С командой cp также можно использовать опции cp -f source dest (принудительно проводит процедуру копирования удаляя целевой файл при необходимости), cp -i source dest (даст предупредительное сообщение перед перезаписью файла), cp -u source dest (обновит опции и скопирует файл только в том случае, если исходный файл новее, чем целевой), cp -n source dest (не будет копировать файл, если он уже существует (не перезапишет), cp -a source dest (эта опция будет архивировать файлы); -
mv
- эта команда работает так же как и cp, но вместо копирования файла, она его перемещает. Ее также можно использовать для переименования файла; -
grep
- проводит поиск в заданном файле/каталоге; -
find
- используется для поиска файлов по папкам, которые подходят выбранным критериям (название, размер, тип файла); -
vi/nano
- используется для входа в текстовый редактор; -
history
- используется для отображения последних использованных вами команд.
Для очистки всего текста в окне терминала используется команда clear
Заключение
SSH - это удобный протокол для обмена информацией между удаленными устройствами, который позволяет дистанционно редактировать файлы с одного компьютера на другом, задействуя компьютер пользователя и виртуальный хостинг, на котором размещаются проекты.