Подключение к серверу HIP по SSH с macOS и Linux: от первого входа до входа по ключу

На Mac и в Linux SSH-клиент уже стоит из коробки - открывать ничего не нужно, кроме терминала. Показываем первое подключение к хиплету HIP по паролю, переход на вход по ключу ed25519, alias в ~/.ssh/config и что делать, если SSH вообще не отвечает.

Чтобы подключиться к серверу HIP по SSH с macOS и Linux, ставить ничего не нужно - клиент OpenSSH уже встроен в обе системы, весь путь укладывается в приложение «Терминал». Разница с Windows не в самом протоколе, а в мелочах: как выглядит первый запрос про отпечаток сервера, где на диске лежат ключи и какими штатными командами удобнее пользоваться. Ниже - где взять IP и пароль хиплета, как войти первый раз, как перейти на вход по ключу ed25519 и что означают самые частые ошибки подключения.

Коротко. IP-адрес и пароль root - на вкладке «Информация» вашего хиплета в my.hip.hosting, в блоке «Подключение». В терминале: ssh root@IP, на запрос про отпечаток сервера ответьте yes, введите пароль. Дальше создайте ключ - ssh-keygen -t ed25519 - и скопируйте его на сервер командой ssh-copy-id root@IP. Пропишите сервер в ~/.ssh/config, чтобы подключаться командой ssh myhiplet. Если SSH перестанет отвечать полностью, у HIP есть настоящая веб-консоль на вкладке «Консоль» - она работает в обход сети сервера и SSH ей не нужен вообще.

Что нужно перед началом

  • Компьютер на macOS или Linux. Клиент OpenSSH входит в поставку обеих систем. Проверить, что он на месте: ssh -V - должно вывести что-то вроде OpenSSH_9.6p1.
  • Хиплет создан и запущен. На вкладке «Информация» у него должен стоять активный статус. Если сервер только что создан, дайте ему минуту-две на первую загрузку.
  • Знаете IP и пароль root - откуда их взять, в следующем разделе.

Если хиплета ещё нет - начните с инструкции по созданию сервера в панели HIP. Если подключаетесь с компьютера на Windows, а не с Mac или Linux, вам нужна другая статья - про SSH из Windows через PuTTY.

Где взять IP-адрес и пароль хиплета

Откройте нужный сервер в my.hip.hosting - попадёте на вкладку «Информация», она открывается по умолчанию. Ниже характеристик сервера и статуса - блок «Подключение»: в нём указан IP-адрес и пароль root. Пароль скрыт размытием, рядом с ним - иконка копирования; клик по самому полю раскрывает пароль текстом, если нужно посмотреть его глазами, а не просто скопировать.

Там же, на вкладке «Информация», есть кнопка «Сменить пароль» - пригодится, если пароль забыт или его нужно обновить отдельно от смены через passwd внутри самого сервера (шаг ниже). Оба способа меняют один и тот же пароль root, просто с разных сторон - панель меняет его напрямую, passwd - изнутри уже открытой сессии.

Первое подключение по SSH с macOS и Linux

Откройте терминал: на macOS - Программы -> Утилиты -> Терминал или Spotlight по слову terminal, на Linux - «Терминал» в меню приложений. Введите команду, подставив свой IP:

ssh [email protected]

  • root - пользователь, под которым HIP создаёт новый хиплет;
  • 45.14.247.252 - IP-адрес сервера из блока «Подключение».

При первом обращении к новому серверу клиент покажет что-то вроде:

The authenticity of host '45.14.247.252 (45.14.247.252)' can't be established.

ED25519 key fingerprint is SHA256:aB3kZ...q9M.

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])?

Это не ошибка и не признак взлома. Отпечаток (fingerprint) - короткий цифровой слепок ключа сервера. Ваш клиент видит этот сервер впервые и спрашивает разрешения запомнить ключ - если он потом внезапно поменяется, SSH остановит вас предупреждением, а не тихо пустит дальше.

Сверить отпечаток по-настоящему можно только по каналу, независимому от SSH. В панели my.hip.hosting отдельного поля с отпечатком сервера нет ни на вкладке «Информация», ни на вкладке «Консоль» - хотя консоль подключается к серверу напрямую через гипервизор, она показывает экран входа, а не техническую информацию о SSH-ключе. Так что честная версия - обычный trust-on-first-use: на только что созданном сервере, к которому ещё никто не успел подключиться, риск подмены ключа минимален. Наберите yes целиком, не y, и нажмите Enter.

Дальше клиент попросит пароль:

[email protected]'s password:

Введите пароль из блока «Подключение». Символы при вводе не отображаются вообще - ни точек, ни звёздочек, это нормальное поведение терминала. Пароль можно вставить: Cmd+V на macOS, Ctrl+Shift+V в большинстве терминалов Linux.

Что вы должны увидеть. Приглашение сменится на что-то вроде root@hiplet-117445:~# - это уже командная строка сервера, вы внутри.

Смените пароль root сразу после первого входа

Пароль из панели вы только что вводили в терминал открытым текстом, так что имеет смысл сразу поставить свой:

passwd

Команда попросит новый пароль дважды, без отображения на экране. Берите длинный, от 16 символов.

Что вы должны увидеть: passwd: password updated successfully. Учтите: панель my.hip.hosting об этой смене не узнает - в блоке «Подключение» продолжит показывать старый пароль, если вы не обновите его отдельно через «Сменить пароль». Это не страшно для SSH, но пригодится запомнить для раздела про веб-консоль ниже.

Настройте вход по ключу вместо пароля

Пароль можно подобрать перебором, и вводить его вручную каждый раз утомительно. Ключ решает обе проблемы разом. Пара ключей - это два файла: приватный остаётся только на вашем компьютере, публичный кладётся на сервер, и сервер пускает того, кто докажет владение приватным ключом, ничего не передавая по сети напрямую.

Вход по паролю

Вход по ключу

Настройка

не нужна, пароль уже выдан

один раз создать ключ и скопировать на сервер

Каждое подключение

вводите пароль вручную

ничего не вводите (или только passphrase от файла ключа)

Устойчивость к перебору

пароль реально подобрать автоматическим сканером

ключ ed25519 подобрать на практике нельзя

Когда использовать

только для самого первого входа

везде дальше - и как основной способ входа

Создайте пару ключей. Команда выполняется на вашем компьютере, не на сервере:

ssh-keygen -t ed25519 -C "kate@macbook"

  • -t ed25519 - тип ключа: современный, короткий, быстрый, разумный выбор по умолчанию;
  • -C "kate@macbook" - метка-комментарий, чтобы потом на сервере было видно, чей это ключ.

На вопрос про расположение файла нажмите Enter - оставит ~/.ssh/id_ed25519. На вопрос про passphrase решайте сами: пустая строка удобнее, отдельный пароль на файл ключа полезнее, если ноутбук могут украсть.

Что вы должны увидеть: в каталоге ~/.ssh/ появились два новых файла - id_ed25519 и id_ed25519.pub.

Скопируйте публичный ключ на сервер - готовая команда сама создаст каталог ~/.ssh на сервере и допишет ключ в нужный файл (пароль спросит последний раз):

ssh-copy-id [email protected]

Если ssh-copy-id в системе нет - иногда так бывает на macOS без Homebrew, - сделайте то же самое вручную одной строкой:

cat ~/.ssh/id_ed25519.pub | ssh [email protected] 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'

Команда читает ваш публичный ключ, передаёт его на сервер по уже работающему паролю и дописывает в authorized_keys, заодно выставляя нужные права.

Проверка, прежде чем идти дальше: выполните ssh [email protected] ещё раз. Сервер должен пустить без пароля (или спросить только passphrase от файла ключа, если вы её задавали). Не переходите к следующему шагу, пока это не сработало - иначе рискуете остаться совсем без доступа.

Отключите вход по паролю - но только после проверки

Как только вход по ключу подтверждён, есть смысл выключить вход по паролю в sshd совсем. Причина не абстрактная: любой сервер с белым IP довольно быстро попадает в поле зрения автоматических сканеров, которые перебирают пароли для root и других частых имён пользователей по всему диапазону адресов интернета - это фоновый шум сети, а не персональная атака на вас, но пароль всё равно остаётся угадываемым, а ключ ed25519 - нет. Подробный разбор правки sshd_config, перезапуска службы и проверки, что вы не заблокировали себя, - в статье Защита свежего VPS: первичная настройка сервера Ubuntu за 10 минут.

Держите в голове одну вещь про HIP отдельно: даже если вы полностью отключите пароль в sshd, пароль root как таковой на сервере продолжает существовать и работать - просто не для SSH. Веб-консоль HIP на вкладке «Консоль» показывает системный вход в обход sshd - по логике работы Linux-логина через PAM консоль должна по-прежнему принимать именно этот пароль, но именно эту комбинацию мы намеренно не проверяли вживую (не хотели рвать себе SSH-доступ к рабочему серверу), так что это архитектурный вывод, а не прямой тест. Так что не удаляйте и не забывайте пароль root окончательно, даже перейдя на ключи - он остаётся вашим запасным выходом на случай, если что-то в самом SSH сломается.

~/.ssh/config: подключение одной короткой командой

Набирать ssh [email protected] каждый раз - лишняя работа. Опишите сервер один раз в файле ~/.ssh/config на своём компьютере (если файла нет - создайте):

Host myhiplet

HostName 45.14.247.252

User root

IdentityFile ~/.ssh/id_ed25519

  • Host myhiplet - короткое имя, которое вы придумываете сами;
  • HostName - настоящий IP-адрес сервера;
  • User - имя пользователя для входа;
  • IdentityFile - какой приватный ключ использовать именно для этого сервера.

Права на файл: chmod 600 ~/.ssh/config. Теперь всё подключение сводится к:

ssh myhiplet

Тот же алиас понимают scp и rsync, так что копировать файлы на сервер и обратно можно так же коротко. Серверов в файле может быть сколько угодно, каждый своим блоком Host.

Частые ошибки SSH и что они означают

Сообщение

Что значит

Что делать

Permission denied (publickey)

Сервер не принял ключ, пароль не предлагается - вход по паролю уже отключён

Проверить, попал ли публичный ключ в authorized_keys и права на ~/.ssh; если войти нечем - через веб-консоль

Permission denied (publickey,password)

Не подошёл ни ключ, ни пароль

Сверить пароль в панели my.hip.hosting; если пароль тоже не подходит - сбросить его кнопкой на вкладке «Информация»

Connection refused

Сервер отвечает на этом IP, но порт SSH закрыт - служба sshd не запущена или перенесена на другой порт

Зайти через веб-консоль и проверить systemctl status ssh

Connection timed out

Пакеты вообще не доходят - неверный IP, сервер выключен или трафик режет внешний firewall

Проверить статус хиплета и IP на вкладке «Информация», при необходимости включить сервер на вкладке «Управление»

Первые два случая чинятся, пока у вас есть хоть какой-то способ попасть внутрь сервера - паролем или ключом. Хуже, когда сломано всё сразу: неверно правленный sshd_config, случайно закрытый в ufw порт 22, упавший сетевой интерфейс. В этой ситуации у HIP есть реальный запасной путь - вкладка «Консоль» в my.hip.hosting. Она подключается к серверу напрямую через гипервизор, в обход сети внутри самой машины, и пускает по паролю root независимо от того, что творится с sshd или firewall. Подробный разбор, как через неё найти и починить конкретную поломку, - в статье Веб-консоль HIP: как зайти на сервер, если SSH не работает.

Частые вопросы

Как подключиться к хиплету HIP с MacBook?

Откройте «Терминал» (Программы -> Утилиты, либо Spotlight по слову terminal) и введите ssh root@IP, где IP взят из блока «Подключение» на вкладке «Информация» вашего хиплета. SSH-клиент в macOS встроен, ставить ничего не нужно.

На macOS нет команды ssh-copy-id, что делать?

Скопируйте публичный ключ вручную одной строкой: cat ~/.ssh/id_ed25519.pub | ssh root@IP 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'. Результат тот же, просто без отдельной утилиты.

Что значит ошибка Permission denied (publickey)?

Сервер не принял ваш ключ и не предлагает ввести пароль вместо него - значит вход по паролю уже отключён. Если ключ никогда не работал, зайдите через веб-консоль HIP и проверьте, попал ли публичный ключ в ~/.ssh/authorized_keys и правильные ли на нём права.

Как сделать так, чтобы SSH не спрашивал пароль каждый раз?

Настройте вход по ключу: ssh-keygen -t ed25519 на своём компьютере, затем ssh-copy-id root@IP. После этого сервер пускает по ключу без пароля - если только вы сами не поставили passphrase на файл ключа.

Стоит ли отключать вход по паролю в SSH?

Да, но только после того, как вход по ключу проверен и реально работает. Пароль можно подобрать автоматическим перебором, ключ ed25519 - на практике нельзя. Подробности - в статье про защиту свежего VPS.

Что делать, если SSH к серверу HIP вообще не подключается?

Сначала проверьте статус сервера в панели - возможно, дело не в SSH, а в том, что сервер выключен. Если сервер работает, а SSH не пускает из-за сломанного sshd, firewall или потерянного ключа, откройте вкладку «Консоль» в my.hip.hosting - она подключается напрямую через гипервизор и работает по паролю, даже когда SSH полностью недоступен.

Коротко

  • IP и пароль root - в блоке «Подключение» на вкладке «Информация» вашего хиплета в my.hip.hosting; пароль скрыт размытием и раскрывается по клику.
  • Первое подключение - ssh root@IP, отпечаток сервера подтверждаете словом yes по принципу trust-on-first-use: панель HIP отдельного поля с отпечатком для сверки не показывает.
  • Вход по ключу - ssh-keygen -t ed25519 и ssh-copy-id; проверяйте, что ключ реально работает, прежде чем отключать пароль.
  • Отключать пароль в sshd стоит, но не раньше, чем ключ подтверждён - пароль подбирают автосканеры, ключ ed25519 подобрать нельзя.
  • ~/.ssh/config с блоком Host сокращает вход до команды ssh myhiplet.
  • Если SSH сломан полностью - неверный sshd_config, закрытый firewallом порт, потерянный ключ, - у HIP есть настоящая веб-консоль на вкладке «Консоль», которая работает в обход sshd; по логике она должна принимать пароль root даже при выключенном для SSH входе по паролю, хотя именно эту комбинацию мы вживую не проверяли.

Что дальше

SECTION
How To
REVIEWED
—
LANGUAGES
EN · RU