SSH — один из способов дистанционного управления сервером на хостинге. Рассказываем, что это за протокол и как его использовать.
SSH — это сетевой защищённый протокол передачи данных для дистанционного управления устройствами.
Он позволяет передавать различные команды другому компьютеру или серверу: например, загружать или удалять файлы, запускать приложения и так далее.
При этом все данные, которые передаются от вас к удалённому устройству, надёжно зашифрованы. SSH создаёт защищённое соединение и не позволит злоумышленникам украсть ценную информацию.
SSH применяют для удалённого управления серверами на хостинге. Он даёт возможность подключаться и совершать все необходимые действия с любого устройства.
При помощи SSH можно:
Чтобы подключение к удалённому устройству успешно состоялось, нужны две программы: SSH-сервер и SSH-клиент.
SSH-сервер устанавливается на устройстве, к которому будет произведено подключение. Если речь идёт об удалённом управлении хостингом, какой SSH-сервер будет применяться, решает провайдер. Обычно это бесплатная программа — OpenSSH.
SSH-клиент — это программа на компьютере пользователя, которая осуществляет подключение и передаёт информацию. В Linux и macOS используется OpenSSH, и обычно она уже встроена. Подключиться и управлять удалённым устройством можно через терминал.
На Windows клиент не установлен по умолчанию, и нужно скачивать стороннее приложение.
Несколько распространённых SSH-клиентов для этой ОС:
Чаще всего используют PuTTY — он бесплатный и достаточно простой в управлении. Именно его мы советуем установить и будем приводить в примерах в этой статье.
Перед началом передачи информации между получателем и отправителем должно установиться безопасное соединение. Это происходит в три шага:
1. Установка TCP-соединения. TCP — это протокол передачи данных. Он относится к транспортному уровню модели OSI. С его помощью информация с одного устройства доставляется на другое. При этом он обеспечивает безопасную транспортировку пакетов и гарантирует их целостность.
Перед началом передачи данных должно быть установлено безопасное соединение. Происходит это следующим образом:
2. Открытие защищённого канала. Получатель и отправитель должны договориться, как они будут шифровать и сжимать данные.
3. Аутентификация пользователя. После того как был открыт защищённый канал, сервер должен проверить, кто к нему подключился и имеет ли он на это право.
Идентифицировать юзера можно двумя способами:
SSH создал защищённое соединение. Теперь клиент может передавать данные.
Мы разобрались, что такое SSH и как он работает. Давайте теперь посмотрим, как пользоваться им на практике.
Чтобы подключиться к серверу, вам понадобятся определённые данные:
На нашем хостинге эта информация есть в личном кабинете, в разделе «Инструкция» к каждому серверу.
Все необходимые данные вы найдёте в первом разделе — «Информация о сервере»:
Если на вашем компьютере стоит Linux или macOS, зайдите в терминал.
В появившемся окне наберите:
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-ключ — хороший способ не вводить пароль постоянно, когда вы подключаетесь.
Вам понадобится два ключа: публичный и приватный. Приватный ключ — закрытый, его нельзя сообщать никому ни при каких обстоятельствах. Публичный же можно передать тому, с кем вы будете обмениваться зашифрованными данными.
Два ключа нужны, потому что SSH использует метод ассиметричного шифрования. Информация, которую вы передаёте, шифруется одним ключом, а расшифровать её может только тот, у кого есть второй ключ.
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:33: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. Именно там они будут сохранены, если вы ничего не укажете на втором шаге. Если же вы выбрали другой путь, в сообщении будут указаны другие данные.
Публичный ключ вам нужно будет загрузить на сервер. Как это сделать, мы расскажем позже.
Вам понадобится приложение PuTTYgen.
1. Запустите его. Выберите тип ключа — RSA. И проверьте, чтобы его длина была 2048 бит.
2. Кликните на Generate и хаотично подвигайте мышкой. Программа использует движение курсора для создания случайных данных.
В верхней части окна появится публичный ключ.
Лучше сразу копируйте его, чтобы потом загрузить на сервер.
3. Сохранить ключи можно в любой папке на устройстве, нажав на Save public key и Save private key.
Читайте инструкции в нашей базе знаний:
Вы подключились к удалённому устройству, прошли аутентификацию. Теперь можно управлять машиной со своего компьютера, используя различные команды.
Таких команд существует очень много. Все они одинаково работают при использовании любого SSH-клиента.
Мы перечислим несколько основных.
1. ls — выводит название всех файлов и папок на удалённом устройстве. Её используют вместе с набором команд:
2. cd — перемещение между директориями. Введите команду, укажите путь к папке, и вы окажетесь в этой папке.
3. sudo — позволяет выполнять любые команды от имени администратора.
4. mv — переименовывает файлы или перемещает их в директории. Допустим, мы ввели mv name1 name2. Если name2 — это существующая директория, то файл name1 переместится туда. Если директории name2 не существует, name1 будет переименован в name2.
5. rm — команда для удаления документов и директорий. Введите после неё имя файла или папки, и этот файл или папка будут удалены.
6. cp — используется, когда нужно копировать файл или папку. Если вы введёте cp 1file 2file, то 1file будет скопирован в 2file. Если нужно скопировать одну директорию в другую, после cp наберите -r. Выглядеть это будет так:
cp -r 1dir 2dir
При этом если директории 2dir не существует, она будет создана.
7. chmod — изменение прав доступа к файлу. Сначала указывается команда, затем права доступа и пользователь, которому эти права даются или отнимаются, и в конце путь к файлу.
Права бывают трёх видов:
И три вида пользователей:
Разрешение обозначается знаком +, запрет — знаком -.
Например, мы указываем:
chmod о+r filename
Это значит, что мы разрешили чтение файла filename всем, кроме его владельца и группы.
8. scp — передача файлов с вашего устройства на сервер. После команды вы указываете имя локального файла (или путь к папке), имя пользователя, IP-адрес сервера и адрес папки, где нужно разместить файл.
Выглядеть это будет так:
scp example.txt username@111.222.333.444:/path/to/new/location/
Это лишь малая часть базовых команд SSH. Их хватит для общего понимания работы с протоколом. Но, конечно, для полноценного применения SSH на практике этого списка будет недостаточно.
Разместите ваши проекты на наших виртуальных и выделенных серверах и управляйте ими из любой точки мира.