Что такое SSH
SSH — один из способов дистанционного управления сервером на хостинге. Рассказываем, что это за протокол и как его использовать.
Что такое SSH
SSH (Secure Shell — «безопасная оболочка») — это сетевой защищённый протокол передачи данных для дистанционного доступа к системам.
Он позволяет передавать различные команды другому компьютеру: например, загружать или удалять информацию, запускать приложения и так далее.
При этом всё, что передаётся девайсу, надёжно зашифрована. Создаётся защищённое подключение, чтобы не позволить злоумышленникам украсть ценную информацию.
Функции SSH
Применяется для дистанционного управления машинами на хостинге. Он даёт возможность подключаться к системе и совершать все необходимые действия с любого гаджета.
С его помощью можно:
- запускать приложения, удалять, перемещать содержимое, выполнять другие действия удалённо;
- передавать сообщения по безопасному каналу;
- сжимать контент для быстрой доставки;
- перенаправлять порты и передавать зашифрованный трафик между портами разных систем.
SSH-сервер и SSH-клиент
Чтобы подключение к системе успешно состоялось, требуются две программы: SSH-сервер и SSH-клиент.
SSH-сервер устанавливается на машине, к которой будет произведено подключение. Если речь идёт о дистанционном управлении хостингом, что будет применяться, решает провайдер. Обычно это бесплатная программа — OpenSSH.
SSH-клиент — это программа на компьютере пользователя, которая осуществляет подключение и передаёт информацию. В Linux и macOS используется OpenSSH, и обычно она уже встроена. Подключиться и управлять можно через терминал.
На Windows клиент не установлен по умолчанию, придётся скачивать стороннее приложение.
Несколько самых распространённых SSH-клиентов для этой ОС:
- PuTTY
- SecureCRT
- ShellGuard
- Axessh
- ProSSHD.
Чаще всего используют PuTTY — он бесплатный и достаточно простой в управлении. Именно его мы советуем установить и будем приводить в примерах в этой статье.
Принцип работы SSH
SSH использует 22 TCP-порту.
Перед началом передачи информации между получателем и отправителем должно установиться безопасное соединение. Это происходит в три шага:
1. Установка TCP-соединения. TCP — это протокол передачи данных. Он относится к транспортному уровню модели OSI. С его помощью сообщения с одного девайса доставляются на другой. При этом он обеспечивает безопасную транспортировку пакетов и гарантирует их целостность.
TCP-соединение устанавливается так:
- Отправитель просит установить связь.
- Принимающая сторона отвечает сообщением SYN и подтверждает получение информации с помощью сообщения ACK.
- Отправитель, в свою очередь, тоже подтверждает получение.
- Соединение установлено.
2. Открытие защищённого канала. Получатель и отправитель должны договориться, как они будут шифровать и сжимать контент.
- Сначала они сообщают друг другу версии протокола и другую дополнительную информацию. Это помогает установить, совместимы ли версии, и определиться с дальнейшими шагами.
- Затем системы сообщают друг другу, какие алгоритмы они поддерживают. Одни из этих алгоритмов будут применяться для шифрования информации, другие — для её сжатия, а третьи — для отправки ключей. Технологии располагаются в порядке от самого предпочтительного до наименее предпочтительного. Обе стороны сравнивают полученные сведенья с теми алгоритмами, которые они поддерживают, и выбирают первые совпавшие варианты.
- В конце создаётся и отправляется уникальная комбинация символов — fingerprint. Если связь устанавливалась раньше, компьютеру уже известен этот fingerprint. Сведенья о нём хранится в /home/username/.ssh/known_hosts. А если подключение происходит впервые, девайс «спросит», можем ли мы доверять противоположной стороне. После вашего подтверждения сгенерируется сессионный ключ для симметричного шифрования канала.
3. Аутентификация пользователя. Когда был открыт защищённый канал, требуется проверить, кто подсоединился и имеет ли он на это право.
Идентифицировать юзера можно:
- паролем,
- с помощью специального SSH-ключа.
Защищённая связь создана. Теперь можно передавать сообщения.
Мы разобрались, что представляет собой и как работает протокол. Давайте теперь посмотрим, как это применять на практике.
Как подключиться к серверу
Для этого понадобятся:
- IP-адрес машины;
- логин;
- пароль.
На нашем хостинге всё это доступно в личном кабинете, в разделе «Инструкция» к каждому серверу.
Всё необходимое вы найдёте в первом разделе — «Информация о сервере»:
Если на вашем компьютере стоит операционная система Linux, macOS или UNIX, зайдите в терминал.
В появившемся окне наберите:
ssh username@185.211.200.111
Вместо username должен быть указан ваш логин, а вместо 185.211.200.111 — IP-адрес машины, к которой вы подключаетесь.
Нажмите Enter.
Если ваша ОС — Windows, потребуется установить клиент. В наших примерах возьмём стандартную программу PuTTY.
- Запустите программу, нажмите на Session и введите IP машины в поле Host Name (or IP address).
- Нажмите Open.
- После подключения откроется окно консоли.
Если компьютер подсоединяется впервые, как мы уже говорили выше, он отправит вам fingerprint:
The authenticity of host ’185.211.200.111 (185.211.200.111)’ can’t be established.
ECDSA key fingerprint is ed:fe:f5:d7:98:fe:85:64:e1:44:11:af:e7:8d:33:de.
Are you sure you want to continue connecting (yes/no)?
Введите yes.
После этого на экране появится запрос пароля. После ввода подключение будет установлено, и появится возможность управлять системой удалённо.
Доступ по ключу
SSH-ключ — хороший способ, если вы не хотите вводить пароль постоянно при подключении.
Вам понадобится два ключа: открытый (публичный) и закрытый (приватный). Закрытый не передавайте никому ни при каких обстоятельствах. Открытый можно передать тому, с кем вы будете обмениваться зашифрованной информацией.
Два ключа необходимы, потому что используется метод ассиметричного шифрования. Информация, которую вы передаёте, шифруется первым, а расшифровать её может только тот, у кого есть второй.
Генерация ключа на Linux ИЛИ macOS
1. Вводим в терминале:
ssh-keygen -t rsa
2. Дальше указываем место, куда сохранить:
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Задайте маршрут к папке. Или нажмите Enter — тогда выберется место по умолчанию /.ssh/id_rsa.
3. Дальше на экране появится предложение создать специальную фразу для большей безопасности:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Если вы не хотите вбивать её всё время, когда подключаетесь, пропустите этот шаг с помощью Enter.
4. Всё готово:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
ed:fe:f5:d7:98:fe:85:64:e1:44:11:af:e7:8d:22:de user@localhost
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| .. * O o B .|
| . . + + * S |
| == B o + . .|
| .. B . = . . |
| .. B o = + ..|
| . E.o * . o .|
| oooS +. |
+----[SHA256]-----+
Закрытый ключ находится в ~/.ssh/id_rsa, открытый — в ~/.ssh/id_rsa.pub. Именно там они будут сохранены, если вы ничего не укажете на втором шаге. Если же вы выбрали другой путь, в сообщении будут указаны другие сведенья.
Публичный надо загрузить на сервер. Как это сделать, мы расскажем позже.
Генерация ключей на Windows
Вам понадобится приложение PuTTYgen.
Запустите его. Выберите тип — RSA. И проверьте, чтобы его длина была 2048 бит.
Кликните на Generate и хаотично подвигайте мышкой. Программа использует движение курсора для создания случайных данных.
В верхней части окна появится открытый ключ. Лучше сразу скопируйте его, чтобы потом загрузить на хостинг. Сохраните его в любом месте, нажав Save public key и Save private key.
Кака закрузить ключ на сервер EdgeЦентр
Читайте инструкции в нашей базе знаний:
Основные команды
Вы подсоединились к системе, прошли аутентификацию. Теперь можно управлять машиной со своего компьютера, используя различные команды.
Их существует очень много. Все они одинаково работают при использовании любого SSH-клиента.
Мы перечислим несколько основных.
ls — выводит название всех документов и папок на удалённом устройстве. Её используют вместе с группой команд:
- ls -la — отображает все файлы и сведенья о них: права доступа, имя создателя и владельца.
- ls -lha — показывает размер каждого документа в байтах.
- ls -lha | less — просматривание документов и папок по страницам.
cd — переключение между папками. После ввода укажите путь, и окажетесь в искомой директории.
sudo — позволяет выполнять любые действия от имени администратора.
mv — переименовывает файлы или перемещает их в директории. Допустим, мы ввели mv name1 name2. Если name2 — это существующая папка, то name1 переместится туда. Если директории name2 не существует, name1 будет переименован в name2.
rm — удаляет документы и директории. Введите после неё имя файла или папки, и они будут удалены.
cp — используется, когда требуется копировать документ. Если вы введёте cp 1file 2file, то 1file будет скопирован в 2file. Если надо скопировать одну директорию в другую, после cp наберите -r. Выглядеть это будет так:
cp -r 1dir 2dir
При этом если директории 2dir не существует, она будет создана.
chmod — изменение прав доступа. После ввода укажите права доступа и пользователя, которому эти права даются или отнимаются, и в конце путь к информации.
Права бывают трёх видов:
- r — чтение;
- w — запись;
- x — выполнение.
И три вида пользователей:
- u — владелец;
- g — группа файла;
- о — все остальные пользователи.
Разрешение обозначается знаком +, запрет — знаком -.
Например, мы указываем:
chmod о+r filename
Это значит, что мы разрешили чтение filename всем, кроме его владельца и группы.
scp — передача информации с вашего компьютера на другой. После ввода вы указываете имя локального документа, имя пользователя, IP-адрес машины и адрес директории.
Выглядеть это будет так:
scp example.txt username@111.222.333.444:/path/to/new/location/
Это лишь малая часть базовых команд. Их хватит для общего понимания работы. Но, конечно, для полноценного применения на практике этого списка будет недостаточно.
Подведём итоги
- SSH — это защищённый протокол передачи данных для управления девайсами по интернету.
- Позволяет выполнять различные действия удалённо, безопасно передавать контент, сжимать его для быстрой передачи и так далее.
- Чтобы применять протокол, необходимы специальные программы: SSH-клиент и SSH-сервер.
- Когда вы подключаетесь, сначала устанавливается безопасное соединение. Открывается защищённый канал, происхоит идентификация юзера.
- Если у вас нет желания вводить пароль постоянно, когда вы подключаетесь, можно создать SSH-ключ и загрузить его на сервер.
- Когда связь между вашим компьютером и машиной установлена, вы можете управлять ей с помощью разных команд.
- Хостингом EdgeЦентр можно управлять с помощью SSH.
Разместите ваши проекты на наших виртуальных и выделенных серверах и управляйте ими из любой точки мира.