SSH-клиент на Mac и в Linux уже есть. Первое подключение, вход по ключу ed25519, алиас в ~/.ssh/config и разбор частых ошибок.
SSH (secure shell) - протокол для защищённого доступа к командной строке удалённого сервера. Хорошая новость: чтобы подключиться к серверу по SSH из macOS и Linux, отдельную программу ставить не нужно - клиент уже встроен, всё делается в приложении «Терминал». В инструкции: где взять адрес и пароль, как зайти первый раз по паролю, как перейти на вход по ключу и как больше не набирать длинную команду каждый раз.
Коротко. Возьмите на странице сервера в панели
my.weasel.cloudIP-адрес и пароль root. В терминале:ssh root@IP, подтвердите отпечаток словомyes, введите пароль и сразу смените его командойpasswd. Дальше создайте ключ -ssh-keygen -t ed25519- и скопируйте его на сервер черезssh-copy-id: пароль больше не понадобится. Пропишите сервер в~/.ssh/config, чтобы подключаться одной командойssh myvps.
Что нужно перед началом
- Mac или компьютер с Linux. Клиент OpenSSH встроен в macOS и входит во все популярные дистрибутивы Linux. Проверить, что он на месте:
ssh -V- выведет версию вродеOpenSSH_9.6p1. - Данные сервера: IP-адрес, имя пользователя (на новом сервере это
root) и первичный пароль. Где их взять - в следующем разделе. - Сервер запущен. В панели у него должен быть статус «активен». Если сервер только что создан, дайте ему минуту на загрузку.
Если сервера ещё нет, начните с инструкции Как заказать первый VPS.
Где взять IP-адрес, пользователя и пароль
Всё это выдаётся при создании сервера, в двух местах:
- Панель my.weasel.cloud. Откройте страницу нужного сервера - там указаны IP-адрес (четыре числа через точку, например
203.0.113.10), пользователь (root) и пароль. - Письмо о создании сервера. Приходит на адрес, указанный в аккаунте, и содержит те же данные. Первичный пароль там открытым текстом - поэтому в шаге 2 мы его сменим.
Если SSH перестал пускать, а пароль на сервере ещё не отключён - зайдите с ним и почините настройки. Если пароль уже отключён (и ключ при этом не работает), зайдите через веб-консоль: в my.weasel.cloud на странице сервера откройте вкладку Console. Если и это не помогло - Rescue mode, а затем тикет в поддержку (Support → Open Ticket, департамент Tech support).
Шаг 1. Подключитесь к серверу по SSH по паролю
Откройте терминал. На macOS - Программы -> Утилиты -> Терминал или поиск Spotlight по слову terminal. На Linux - «Терминал» в меню приложений. Введите команду, подставив свой IP:
root- имя пользователя на сервере;@отделяет пользователя от адреса;203.0.113.10- IP-адрес сервера из панели.
При первом подключении к новому серверу клиент покажет что-то вроде:
The authenticity of host '203.0.113.10 (203.0.113.10)' 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) - короткий идентификатор ключа сервера. Клиент раньше этот сервер не видел, спрашивает разрешения запомнить его и предупреждает, что в дальнейшем будет сверять: если ключ вдруг поменяется, вас остановят (см. раздел про ошибку «REMOTE HOST IDENTIFICATION HAS CHANGED»).
Когда сверять отпечаток по-настоящему. Строго - по независимому от SSH каналу, например через веб-консоль сервера. У weasel он есть: вкладка Console в панели сервера, там можно выполнить ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub и сверить отпечаток. Если сверять лень, на практике работает обычный trust-on-first-use: на только что созданном сервере, к которому ещё никто не подключался, риск подмены минимальный - можно просто набрать yes и нажать Enter. Ответ yes целиком, не y.
Дальше клиент запросит пароль:
[email protected]'s password:
Введите пароль из панели. Символы при вводе не отображаются - ни точек, ни звёздочек, это нормально. Пароль можно вставить: Cmd+V на macOS, Ctrl+Shift+V в большинстве терминалов Linux.
Что вы должны увидеть. Приглашение сменится на что-то вроде root@vps-12345:~# - это командная строка сервера. Вы внутри.
Шаг 2. Смените пароль root
Первичный пароль побывал в панели и в письме открытым текстом, поэтому первым делом задайте свой:
passwdКоманда попросит ввести новый пароль дважды (без отображения). Придумайте длинный - 16 символов и больше.
Что вы должны увидеть: passwd: password updated successfully. Всё, старый пароль больше не действует.
Подключение на нестандартном порту или под другим пользователем
По умолчанию SSH слушает порт 22. Если на сервере его перенесли (частая мера против перебора паролей), укажите порт флагом -p:
ssh -p 2222 [email protected]Здесь -p 2222 - номер порта, user - имя нужного пользователя. Чтобы зайти под конкретным пользователем на стандартном порту, просто поставьте его имя перед @:
Флаги комбинируются: ssh -p 2222 [email protected].
Шаг 3. Настройте вход по ключу
Пароль можно подобрать перебором, и его приходится вводить каждый раз. Ключ решает обе проблемы. Пара ключей - это два связанных файла:
- приватный (
id_ed25519) - остаётся только на вашем компьютере, никому не передаётся; - публичный (
id_ed25519.pub) - кладётся на сервер. Сервер пускает того, кто докажет, что владеет парным приватным ключом.
Вход по паролю | Вход по ключу | |
|---|---|---|
Настройка | ничего не нужно, пароль уже выдан | один раз создать ключ и скопировать на сервер |
Каждое подключение | вводите пароль | ничего не вводите (или только passphrase от файла ключа) |
Подбор | пароль реально подобрать перебором | ключ ed25519 подобрать на практике нельзя |
Когда использовать | только для самого первого входа | везде дальше; затем вход по паролю выключают |
Создайте пару. Команду выполняете на своём компьютере, не на сервере:
ssh-keygen -t ed25519 -C "kate@macbook"-t ed25519- тип ключа. ed25519 современный, короткий и быстрый, подходит по умолчанию.-C "kate@macbook"- комментарий-метка, чтобы потом на сервере было видно, чей это ключ. Обычно пишут почту или имя машины.
На вопрос про расположение файла нажмите Enter (оставит ~/.ssh/id_ed25519). На вопрос про passphrase - на выбор: можно задать пароль на сам файл ключа (защита, если ноутбук украдут), можно оставить пустым. Если задаёте - см. раздел про связку ключей ниже.
Что вы должны увидеть: в каталоге ~/.ssh/ появились два файла - id_ed25519 и id_ed25519.pub.
Теперь скопируйте публичный ключ на сервер. Проще всего готовой командой (спросит пароль root - последний раз):
ssh-copy-id [email protected]Она сама создаст на сервере каталог ~/.ssh, допишет ваш публичный ключ в файл ~/.ssh/authorized_keys и выставит нужные права.
Если ssh-copy-id в системе нет (иногда на macOS), сделайте то же вручную одной строкой:
cat ~/.ssh/id_ed25519.pub | ssh [email protected] 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'Команда читает ваш публичный ключ, передаёт его по SSH на сервер и там дописывает в authorized_keys, попутно выставляя права.
Проверка: выполните ssh [email protected] ещё раз. Если ключ подхватился, сервер пустит без запроса пароля (или спросит только passphrase от файла ключа, если вы её задавали).
Выключать вход по паролю на сервере - следующий разумный шаг, но это правка настроек sshd на сервере: подробно - в статье первые 10 минут на новом VPS. Делайте это только после того, как убедились, что вход по ключу работает.
Шаг 4. Права на файлы ключей
SSH-клиент откажется использовать приватный ключ, к которому есть доступ у других пользователей системы - это защита от кражи ключа. На своём компьютере выставьте:
chmod 700 ~/.sshchmod 600 ~/.ssh/id_ed25519700на каталоге~/.ssh- заходить и читать может только владелец.600на приватном ключе - владелец читает и пишет, остальные никак.
На сервере те же требования к ~/.ssh (700) и ~/.ssh/authorized_keys (600). Если ключ копировали через ssh-copy-id или команду выше, права уже правильные.
Важно на стороне сервера. При настройке StrictModes yes (значение по умолчанию) sshd игнорирует ключ, если на запись группе или другим пользователям открыт хоть один из трёх объектов: домашний каталог, ~/.ssh или сам файл authorized_keys. То есть недостаточно 700 и 600 - нужно ещё, чтобы сам $HOME не был доступен на запись группе. Причина отказа видна на сервере в journalctl -u ssh строкой Authentication refused: bad ownership or modes for directory .... Лечение - на сервере: вход по паролю на этом этапе ещё не отключён (см. напоминание в шаге 3), поэтому зайдите под ним и выполните:
chmod go-w ~ ~/.sshchmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keysСимптом нарушенных прав - сервер продолжает спрашивать пароль, хотя ключ на месте.
macOS: сохранить passphrase в связку ключей
Если вы задали passphrase на файл ключа, macOS может запомнить её в системной связке ключей (Keychain), чтобы не вводить при каждом подключении:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519Чтобы это работало и после перезагрузки, добавьте эти строки в ~/.ssh/config - в блок Host нужного сервера, не в общий Host *:
Host myvps HostName 203.0.113.10 User root IdentityFile ~/.ssh/id_ed25519 AddKeysToAgent yes IgnoreUnknown UseKeychain UseKeychain yesAddKeysToAgent yes- подгружать ключ в агент при первом использовании.UseKeychain yes- брать passphrase из связки ключей.IgnoreUnknown UseKeychain- должна стоять перед строкойUseKeychain.
Строки IgnoreUnknown UseKeychain и UseKeychain yes - только для macOS. На Linux параметр UseKeychain клиенту неизвестен, и без обёртки IgnoreUnknown команда ssh откажется работать по этому конфигу с ошибкой разбора. Если файл конфига используется только на Linux, строку UseKeychain не добавляйте вовсе; если один файл ходит и на Mac, и на Linux - оставьте обе строки в порядке выше.
Если сервер уже описан в ~/.ssh/config (шаг 5), не заводите второй блок - допишите три последние строки в существующий блок этого сервера.
На старых macOS (до Monterey) вместо --apple-use-keychain использовался ключ -K. На Linux passphrase на время сессии держит ssh-agent - в GNOME и KDE он обычно уже запущен, отдельная настройка не нужна.
Шаг 5. Файл ~/.ssh/config - подключение одной командой
Набирать ssh -p 2222 [email protected] каждый раз утомительно. Опишите сервер один раз в файле ~/.ssh/config на своём компьютере (если файла нет - создайте):
Host myvps HostName 203.0.113.10 User root Port 22 IdentityFile ~/.ssh/id_ed25519Host myvps- короткое имя-псевдоним, которое вы придумываете сами.HostName- настоящий IP-адрес или доменное имя сервера.User- имя пользователя, под которым заходить.Port- порт SSH (22 по умолчанию, можно строку не писать).IdentityFile- какой приватный ключ использовать для этого сервера.
Права на файл: chmod 600 ~/.ssh/config. Теперь подключение - это просто:
ssh myvpsПсевдоним понимают и другие команды - scp, rsync, sftp. Серверов в файле может быть сколько угодно, каждый своим блоком Host.
Копирование файлов на сервер и обратно
scp копирует по SSH одним вызовом - синтаксис как у обычного cp, только у удалённой стороны перед путём стоит имя сервера и двоеточие:
scp ./archive.tar.gz myvps:/root/scp myvps:/var/log/syslog ./Первая строка кладёт локальный файл на сервер, вторая забирает файл с сервера в текущий каталог. Каталог целиком - с флагом -r: scp -r ./site myvps:/var/www/.
rsync удобнее для больших и повторяющихся передач: он сравнивает стороны и шлёт только изменившиеся куски.
rsync -avz ./site/ myvps:/var/www/site/-a- сохранять права, время, вложенные каталоги;-v- показывать, какие файлы передаются;-z- сжимать данные в пути (быстрее на медленном канале).
Слэш в конце источника (./site/) означает «содержимое каталога»; без слэша скопируется сам каталог site внутрь целевого. rsync должен стоять и на сервере - на свежих образах Ubuntu и Debian он обычно уже есть, иначе apt install rsync.
Как не терять соединение
Сессия, в которой вы ничего не набираете, может тихо оборваться - промежуточное оборудование и файрволы закрывают простаивающие соединения. Чтобы клиент напоминал о себе, добавьте в ~/.ssh/config в блок Host *:
Host * ServerAliveInterval 60 ServerAliveCountMax 3Клиент раз в 60 секунд шлёт серверу служебный пакет. Если подряд 3 раза ответа нет (примерно через 3 минуты), соединение считается мёртвым и закрывается - вы хотя бы увидите это сразу.
Для длительных задач (перенос данных, сборка, обновление) этого мало: если оборвётся ваш интернет, процесс на сервере умрёт вместе с сессией. Запускайте такие задачи внутри tmux - это программа на сервере, которая держит сессию с командной строкой независимо от вашего подключения.
tmuxВнутри запускаете свою долгую команду. Если SSH оборвётся, переподключаетесь и возвращаетесь в ту же сессию:
tmux attachЗадача всё это время работала. Если tmux не установлен - apt install tmux на сервере.
Частые ошибки
- Permission denied (publickey) - сервер не принял ключ, а пароль не предлагается (значит, вход по паролю уже отключён). Причины: в команде не тот пользователь; публичный ключ не попал в
~/.ssh/authorized_keys; на сервере слишком широкие права на~/.sshили на домашний каталог. Проверить и поправить это можно только зайдя на сервер - а по SSH зайти как раз нечем - откройте веб-консоль в панели weasel (вкладка Console) и поправьте права и ключ там. - Permission denied (publickey,password) - к тому же не подошёл пароль. Сверьте пароль в панели и повторите попытку. Если вход по паролю на сервере уже выключен - зайдите через вкладку Console в панели weasel.
- Connection refused - сервер на связи, но на этом порту никто не слушает: служба
sshdне запущена или SSH переведён на другой порт. Проверить это можно только зайдя на сервер, а SSH как раз недоступен - откройте веб-консоль в панели weasel (вкладка Console), проверьте systemctl status ssh и при необходимости запустите службу командой sudo systemctl start ssh. - Connection timed out - пакеты до сервера не доходят: неверный IP, сервер выключен или порт закрыт внешним файрволом. Сверьте адрес и статус сервера в панели.
- REMOTE HOST IDENTIFICATION HAS CHANGED - ключ сервера изменился с прошлого раза. Обычная причина - переустановка ОС на этом сервере. Удалите старую запись и подключитесь заново, подтвердив новый отпечаток: ssh-keygen -R 203.0.113.10 Если ОС никто не переустанавливал, не подключайтесь, пока не разберётесь, почему сменился ключ.
- Too many authentication failures - у вас несколько ключей, клиент предлагает их серверу по очереди, и сервер рвёт соединение, не дождавшись нужного. Укажите один ключ и запретите перебор:
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 [email protected]
Либо добавьте строку
IdentitiesOnly yesв блок этого сервера в~/.ssh/config. - Host key verification failed - запись в
~/.ssh/known_hostsне совпала с ключом, который прислал сервер (частый спутник предыдущего сообщения про смену ключа). Разберитесь с причиной, затем удалите запись:ssh-keygen -R <адрес>.
Вопросы и ответы
Как подключиться к серверу по SSH с макбука
Откройте «Терминал» (Программы -> Утилиты, либо Spotlight по слову terminal) и введите ssh root@IP-адрес, где IP взят со страницы сервера в панели. SSH-клиент в macOS встроен, ставить ничего не нужно. При первом подключении подтвердите отпечаток словом yes и введите пароль root.
Как зайти на сервер по SSH из терминала Linux
Так же, как на Mac: команда ssh root@IP-адрес в любом терминале. Клиент OpenSSH входит во все распространённые дистрибутивы. Если команда не находится, поставьте пакет: apt install openssh-client в Debian и Ubuntu, dnf install openssh-clients в Fedora и AlmaLinux.
Где взять IP-адрес сервера
На странице сервера в панели my.weasel.cloud и в письме, которое приходит после создания сервера. Адрес выглядит как четыре числа через точку, например 203.0.113.10. Там же указаны пользователь (root) и первичный пароль.
SSH просит пароль, хотя я добавил ключ
Раз пароль вообще предлагается - вход по паролю ещё включён, зайдите с ним и выполните chmod 700 ~/.ssh и chmod 600 ~/.ssh/authorized_keys - чаще всего сервер просто не нашёл ваш публичный ключ в ~/.ssh/authorized_keys или права на каталог слишком широкие. Второй вариант - клиент берёт не тот ключ: укажите нужный явно через -i ~/.ssh/id_ed25519 или строкой IdentityFile в ~/.ssh/config.
Как сохранить подключение, чтобы не вводить всё каждый раз
Опишите сервер в файле ~/.ssh/config: блок Host с полями HostName, User, Port, IdentityFile. После этого достаточно ssh myvps. Если на ключе стоит passphrase, на macOS сохраните её в связку ключей командой ssh-add --apple-use-keychain, на Linux passphrase запомнит ssh-agent до конца сессии.
Коротко
- IP-адрес, пользователь и пароль - на странице сервера в панели и в письме о создании.
- Первое подключение:
ssh root@IP, подтвердить отпечаток словомyes, ввести пароль, сразу сменить его черезpasswd. - Нестандартный порт -
ssh -p 2222 user@host; другой пользователь -ssh deploy@host. - Вход по ключу:
ssh-keygen -t ed25519, затемssh-copy-id user@host. Приватный ключ никому не передаётся. - Права:
~/.ssh- 700, приватный ключ - 600. На macOS passphrase - в связку ключей. ~/.ssh/config- псевдонимHost, дальше простоssh myvps.- Файлы -
scpилиrsync -avz; долгие задачи - внутриtmux.
Что дальше
- Как подключиться к серверу по SSH из Windows - если заходите ещё и с машины на Windows.
- Как настроить базовый фаервол ufw - оставить открытыми только нужные порты.
- Как заказать первый VPS - если сервера ещё нет.
- Отключение входа по паролю в SSH - подробно в статье первые 10 минут на новом VPS.
🎁 -40% на первый месяц нового VPS. Промокод GUIDE40
Нужен сервер для первого входа по SSH? Первый месяц со скидкой.
ВведитеGUIDE40при оформлении заказа. Работает один раз на клиента.
Выбрать VPS и забрать скидку →
