Базовый гайд по SSH
Цель этого гайда — познакомить вас с `ssh cli` на простых примерах, которые закрывают 80% потребностей.

Цель этого гайда — познакомить вас с ssh cli на простых примерах, которые закрывают 80% потребностей.
Что такое SSH?
SSH расшифровывается как (S)ecure (SH)ell. Это протокол — набор правил связи между компьютерами, созданный специально для доступа к shell.
С его помощью вы можете безопасно подключиться к удалённой машине и выполнять команды shell, например ls -la.
Как и любой другой протокол — bluetooth, torrent, tcp/ip — сам по себе он бесполезен и требует реального клиента (программы), реализующего протокол. Так же как вы используете qbittorrent для реализации протокола torrent, вы используете openssh для реализации ssh. Есть и графические клиенты вроде cyberduck, filezilla и многих других, но для любой серьёзной работы вы по умолчанию будете использовать openssh. Давайте установим его.
Установка SSH-клиента
Возьмите свой любимый пакетный менеджер и выполните команду установки
# Ubuntu/Debiansudo apt install openssh-client
# macOS (если отсутствует)brew install openssh
# Windows (выберите один вариант)winget install OpenSSHchoco install opensshПоздравляю! Первый шаг сделан. Запустите ssh в терминале, чтобы увидеть доступные команды, а man ssh — чтобы почитать руководство.
Создание вашего первого SSH-ключа
Следующий шаг — настроить ваш пароль, точнее говоря, “ключ”.
SSH использует пару ключей:
- приватный ключ, он остаётся на вашем компьютере
- публичный ключ, который вы размещаете на сервере
выполните команду, чтобы сгенерировать оба:
# Email нужен только для идентификацииssh-keygen -t ed25519 -C "your-email@example.com"ssh-keygen поставляется вместе с cli openssh, так что ничего дополнительно устанавливать не нужно
-t указывает тип шифрования
-C добавляет комментарий, обычно ваш email, чтобы потом можно было отличить ключи друг от друга
вы можете задать эти переменные вручную и просто запустить ssh-keygen
Как работает доверие в ssh?
Чтобы безопасно (первая S, помните?) выполнять команды, нужно установить доверие между двумя ключами. Ваш сервер хранит публичный ключ, вы — приватный.
Рукопожатие выглядит так:
- Ваш ssh-клиент просит сервер о подключении.
- Сервер отвечает “испытанием” (challenge) и просит подписать некоторые данные.
- Ваш клиент подписывает их приватным ключом и отправляет ответ обратно.
- Сервер проверяет ответ с помощью публичного ключа.
- ноутбук стучится
- сервер шлёт случайное испытание
- приватный ключ его подписывает
- публичный ключ проверяет подпись
$ ssh user@server сервер: подпиши это → 7c2e91af ноутбук: подписал → 3b0f6d2a сервер: совпадает с id_ed25519.pub Welcome to Ubuntu 24.04 LTS
Обратите внимание, что для этого вашему серверу нужен ваш публичный ключ! Давайте его туда добавим.
Подключение к удалённой машине
Теперь, когда у вас есть свой ssh-ключ, пора им воспользоваться. Для следующего шага вам понадобится знать:
- ip вашего сервера
- имя пользователя
- пароль
Теперь выполните следующую команду, чтобы скопировать ваш публичный ключ на сервер. Разумеется, замените на реальные данные и дождитесь, пока команда запросит пароль.
ssh-copy-id username@server-ip# поставляется вместе с open-ssh клиентомВы также можете сделать эту часть вручную, скопировав публичный ключ в файлы сервера, если возникнут какие-то проблемы. Подробнее об этом в следующем разделе.
И не переживайте, пароль понадобится только этот единственный раз. Как только ключ появится на целевой машине, при следующем входе понадобится только указать имя пользователя и адрес, а клиент автоматически ответит на challenge за вас! Круто, правда?
Вы можете ещё больше упростить это с помощью алиаса, подробнее об этом здесь
Сделать это вручную
Выполните следующие команды по порядку
# Скопировать содержимое публичного ключаcat ~/.ssh/id_ed25519.pub # выполните это, чтобы увидеть публичный ключ на вашей машине
# Подключиться к серверу с помощью пароляssh username@server-ipmkdir -p ~/.ssh # как и на вашем компьютере, серверу нужна директория .sshecho "paste-public-key-here" >> ~/.ssh/authorized_keys # это создаст файл authorized_keys с вашим ключом внутриchmod 600 ~/.ssh/authorized_keys # изменить права, чтобы сервер мог получить доступ к файлуchmod 700 ~/.ssh # изменить права, чтобы сервер мог получить доступ к директорииэто может показаться сложнее, но по сути вы просто заходите на сервер и вставляете ключ
Смена пароля-фразы вашего ключа
Обычно ssh-keygen добавляет к ключу пароль-фразу (passphrase). Это хорошая практика, ведь ключ хранится в виде обычного текста на вашей машине. Но это раздражает, и я им не пользуюсь. Так что если у вас уже есть ssh-ключ с прошлого раза и вы хотите использовать его без необходимости каждый раз вводить passphrase, можно заменить passphrase, как показано ниже
# Ключ по умолчаниюssh-keygen -p
# Конкретный ключssh-keygen -p -f ~/.ssh/custom_key_nameАлиас для SSH
Чтобы сделать опыт использования ещё приятнее, добавьте алиас для вашего сервера. Найдите расположение конфига SSH, обычно в .ssh:
vim ~/.ssh/configНастройте хост:
# Простой алиасHost myserver HostName 192.168.1.100 User johnПосле этого можно просто выполнить:
ssh myserverи мгновенно подключиться!
Смотрите также: перенос аккаунта cPanel из командной строки и бесплатный SSL-сертификат через Certbot — две вещи, которыми вы займётесь, как только окажетесь на сервере.
Комментарии
Комментарии живут в GitHub Discussions (через giscus), так что для участия нужен аккаунт GitHub.