Добавление публичного ключа на сервер и первый вход по SSH
Хочу себе такие же кнопкиПубличный ключ на сервере и первый вход по SSH: ваш цифровой "ключ от квартиры"
Вы только что арендовали сервер — это как новая квартира в виртуальном мире. Но чтобы зайти внутрь, нужен ключ. Пароль — это как кодовый замок на двери: его можно подобрать или украсть. А SSH-ключи — это как уникальный электронный ключ, который открывает дверь только вам, причём без риска, что его скопируют.
В этом уроке вы научитесь: ✅ Генерировать пару ключей (публичный + приватный) на своём компьютере. ✅ Переносить публичный ключ на сервер безопасно (три проверенных метода). ✅ Настраивать сервер так, чтобы вход по паролю стал невозможен (это критично для безопасности!). ✅ Подключаться к серверу по SSH одной командой, как профессионал.
1. Почему SSH-ключи лучше паролей?
| Проблема паролей | Преимущества SSH-ключей |
|---|---|
| Легко подобрать брутфорсом (перебором) | 2048-битный ключ невозможно взломать за разумное время |
| Можно украсть через фишинг или кейлоггер | Приватный ключ хранится только на вашем ПК и защищён паролем |
| Нужно запоминать сложные комбинации | Одна пара ключей работает для всех ваших серверов |
| При утечке — сервер скомпрометирован | Можно отозвать ключ в один клик (удалить с сервера) |
Аналогия: Пароль — как код от сейфа в отеле (его знают администраторы, уборщики, предыдущие гости). SSH-ключ — как ваш персональный отпечаток пальца, который проверяется сканером (сервером) и не передаётся по сети.
2. Генерация SSH-ключей на вашем компьютере
2.1. Проверка существующих ключей
Прежде чем генерировать новые ключи, проверьте, нет ли их уже:
ls ~/.ssh/
Если вы видите файлы id_rsa (приватный ключ) и id_rsa.pub (публичный), ключи уже есть. Можно использовать их или сгенерировать новые.
2.2. Создание новой пары ключей
Выполните команду (на вашем локальном компьютере, не на сервере!):
ssh-keygen -t rsa -b 4096 -C "ваш_email@example.com"
Расшифровка флагов:
-t rsa— тип ключа (RSA — самый надёжный для большинства задач).-b 4096— длина ключа в битах (чем больше, тем безопаснее).-C "..."— комментарий (обычно email), чтобы идентифицировать ключ.
Что будет происходить:
- Система спросит, куда сохранить ключи. Нажмите Enter, чтобы оставить путь по умолчанию (
~/.ssh/id_rsa). - Система предложит ввести парольную фразу (passphrase) для приватного ключа.
- Рекомендация: придумайте сложную фразу (например,
КотПушкинЛюбитМолоко!2024). Это защитит ключ, если его украдут с вашего ПК. - Если оставите пустым — ключ будет работать без пароля (удобно, но менее безопасно).
- Рекомендация: придумайте сложную фразу (например,
Важно:
- Приватный ключ (
id_rsa) — это ваш секретный ключ от квартиры. Никому его не показывайте!- Публичный ключ (
id_rsa.pub) — это замочная скважина. Его можно копировать на серверы.
3. Копирование публичного ключа на сервер
Теперь нужно поместить публичный ключ в специальный файл на сервере — ~/.ssh/authorized_keys. Есть три способа это сделать.
Способ 1: Команда ssh-copy-id (самый простой)
Если на вашем локальном компьютере есть утилита ssh-copy-id, используйте её:
ssh-copy-id пользователь@IP_сервера
- Замените
пользовательна имя пользователя на сервере (обычноrootили ваше имя). IP_сервера— это IP-адрес вашего сервера (например,192.168.1.100).
Что произойдёт:
- Система запросит пароль от сервера (последний раз!).
- Ключ будет скопирован в
~/.ssh/authorized_keys. - Права на файл будут настроены автоматически.
Если команды
ssh-copy-idнет (например, на Windows), используйте Способ 2 или 3.
Способ 2: Ручное копирование через SSH
-
Выведите содержимое публичного ключа на экран:
cat ~/.ssh/id_rsa.pubСкопируйте весь вывод (начинается с
ssh-rsa AAA...). -
Подключитесь к серверу по SSH с паролем:
ssh пользователь@IP_сервера -
На сервере выполните:
mkdir -p ~/.ssh echo "вставьте_скопированный_ключ" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keyschmod 600— устанавливает правильные права доступа (только вы можете читать файл).
Способ 3: Копирование через scp (для продвинутых)
Если у вас нет доступа по SSH, но есть другой способ загрузить файлы (например, через панель хостинга), скачайте публичный ключ и загрузите его на сервер вручную:
scp ~/.ssh/id_rsa.pub пользователь@IP_сервера:/tmp/
Затем на сервере:
mkdir -p ~/.ssh
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub
4. Первый вход по SSH-ключу
Теперь попробуйте подключиться без пароля:
ssh пользователь@IP_сервера
- Если вы устанавливали парольную фразу (passphrase), система её запросит.
- Если всё настроено правильно — вы попадете на сервер без ввода пароля!
Проблемы?
- "Permission denied (publickey)" — ключ не скопировался или неправильные права на файл. Решение: проверьте
ls -la ~/.ssh/authorized_keys(должно быть-rw-------).- "Agent admitted failure to sign" — SSH-агент не загрузил ваш ключ. Решение: выполните
ssh-add ~/.ssh/id_rsa(и введите passphrase).
5. Отключаем вход по паролю (ОБЯЗАТЕЛЬНО!)
Теперь, когда SSH-ключи работают, закройте лазейку для хакеров — отключите вход по паролю.
-
Подключитесь к серверу:
ssh пользователь@IP_сервера -
Откройте конфиг SSH:
sudo nano /etc/ssh/sshd_config -
Найдите и измените следующие строки:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no(Если строки закомментированы
#, раскомментируйте их.) -
Сохраните файл (
Ctrl+O, затемEnter) и закройте (Ctrl+X). -
Перезапустите SSH-сервер:
sudo systemctl restart sshd
⚠️ ВАЖНО:
- Перед перезапуском откройте второй терминал и проверьте, что вход по ключу работает.
- Если что-то пойдёт не так, вы можете потерять доступ к серверу! (В этом случае поможет консоль хостинга или KVM от провайдера.)
6. Упрощаем подключение: конфиг SSH на локальном ПК
Чтобы не вводить каждый раз ssh пользователь@IP_сервера, создайте конфиг:
-
Откройте (или создайте) файл:
nano ~/.ssh/config -
Добавьте следующий блок (замените данные на свои):
Host мой_сервер HostName IP_сервера User пользователь IdentityFile ~/.ssh/id_rsa Port 22мой_сервер— произвольное имя (например,arb-server).Port 22— порт по умолчанию (если вы его меняли, укажите свой).
-
Сохраните файл. Теперь подключение упрощается до:
ssh мой_сервер
7. Бонус: как управлять несколькими ключами
Если у вас несколько серверов, можно:
- Сгенерировать разные пары ключей для каждого сервера (например,
id_rsa_arb,id_rsa_web). - В конфиге
~/.ssh/configуказать разныеIdentityFile.
Пример:
Host арбитражный_сервер
HostName 192.168.1.100
User root
IdentityFile ~/.ssh/id_rsa_arb
Host веб_сервер
HostName 192.168.1.200
User deploy
IdentityFile ~/.ssh/id_rsa_web
Практика для закрепления
Упражнение 1: Проверка понимания
Ответьте на вопросы:
- Чем отличается приватный ключ от публичного?
- Почему вход по паролю менее безопасен, чем по SSH-ключу?
- Что произойдёт, если удалить
authorized_keysна сервере?
Упражнение 2: Генерация и копирование ключа
- Сгенерируйте новую пару ключей с парольной фразой.
- Скопируйте публичный ключ на сервер всеми тремя способами (для практики).
- Убедитесь, что вход работает.
Упражнение 3: Настройка безопасности
- Отключите вход по паролю в
sshd_config. - Перезапустите SSH-сервер.
- Попробуйте подключиться по паролю — должно выдать ошибку.
Упражнение 4: Упрощение подключения
- Настройте
~/.ssh/configдля вашего сервера. - Подключитесь к серверу одной командой (например,
ssh мой_сервер).
Упражнение 5: Диагностика проблем
Сценарий: После копирования ключа вы получаете ошибку Permission denied (publickey).
- Перечислите 3 возможные причины.
- Опишите, как их устранить.
Итоги урока
✅ Вы научились генерировать безопасные SSH-ключи и понимаете, почему они лучше паролей. ✅ Теперь умеете копировать ключи на сервер тремя способами и настраивать права. ✅ Вы отключили вход по паролю, закрыв основную лазейку для хакеров. ✅ Подключение к серверу стало быстрым и удобным благодаря конфигу SSH.
Следующий шаг: В следующем уроке мы настроим fail2ban (защиту от брутфорса) и двухфакторную аутентификацию (2FA) для ещё большей безопасности.
Помните: SSH-ключи — это как цифровой паспорт для вашего сервера. Храните приватный ключ в безопасности, и никто не сможет проникнуть на ваш сервер без вашего разрешения!
Регистрация на 🏰 VDSina без номера телефона (через почту)
Как не попасть на деньги при посуточной оплате (баланс и блокировки)
Обзор панели управления: где что лежит
Выбор тарифа: на что влияют vCPU, RAM и SSD
Разница между VDS и обычным хостингом (на пальцах)
Как выбрать операционную систему для новичка: Ubuntu vs Debian vs AlmaLinux
Установка сервера в один клик: кнопка «Создать»
Что такое root-пароль и где его сохранить
Первый вход по SSH через командную строку Windows
Первый вход по SSH через PuTTY (простая инструкция)
Первый вход по SSH через Termius (для телефона и ПК)
Как обновить пароль root в панеле VDSina
Базовые команды Linux: ls, cd, sudo, apt update
Как проверить, сколько ресурсов жрет ваш сервер (htop, free -h)
Установка панели управления сервером (ISPmanager) за 5 минут
Установка бесплатной панели FastPanel от 🏰 VDSina (родная)
Установка панели HestiaCP (бесплатно и просто)
Настройка файрвола (UFW) чтобы не взломали в первый же час
Как открыть порты 80 и 443 для сайта
Установка LAMP (Linux, Apache, MySQL, PHP) одной командой
Установка LEMP (Nginx вместо Apache) одной командой
Как забросить сайт на WordPress через панель 🏰 VDSina (готовый шаблон)
Ручная установка WordPress на чистый сервер
Создание базы данных MySQL для сайта через командную строку
Как привязать домен к серверу (настройка A-записи)
Выпуск бесплатного SSL-сертификата от Let's Encrypt
Настройка cron (заданий по расписанию) на VDSina
Автоматическое резервное копирование (бэкапы) в панеле VDSina
Как восстановить сервер из бэкапа за 2 минуты
Настройка VPN на 🏰 VDSina (OpenVPN) для новичка
Настройка WireGuard на 🏰 VDSina (быстрее и проще)
Как проверить, не заблокирован ли ваш IP в РФ
Смена IP-адреса сервера в панеле 🏰 VDSina (если заблокировали)
Как привязать свой ISO-образ для установки Windows Server
Установка бота для Telegram на Python на VDSina
Как запустить бота в фоне (screen и systemd для чайников)
Мониторинг сервера через встроенные графики VDSina
Как не переплатить: выключение сервера при простое (посуточная оплата)
Повышение тарифа без перезагрузки сервера (горячий апгрейд)
Как настроить уведомления о падении сервера в Telegram
Безопасность: запрет входа под root через SSH
Создание нового пользователя с правами sudo
Защита от DDoS (включение защиты в панеле VDSina)
Подключение сетевых дисков (блочные устройства) для дополнительного места
Миграция сайта с другого хостинга на 🏰 VDSina (пошагово)
Как удалить сервер и не забыть отключить оплату
Где брать помощь: техподдержка VDSina, чаты и форумы
Бонус: установка игрового сервера Minecraft (для друзей)
Бесплатный курс: "VDSina для чайников: Сервер за 5 минут: Эффективно и быстро"
Бесплатный виджет обратной связи для JavaScript
Чатрулетка: новый способ общения
Что такое видеочат рулетка и зачем
Фототехника для пейзажей
Как выбрать лучший render хостинг для 3D рендеров с Eevee
Логистика с Excel: бесплатный курс учёта остатков и подбора транспорта
Онлайн генератор паролей для Windows
Онлайн Сплетница субтитры
Оптимизация обработки форм GEO проекта
Пасхалки в сериале Dexter: раскрытие тайн
Погода в Ревде вечером
Родительский портал Воронеж
Роллы, которые не требуют рекламы
SEO-принципы для нейросетевых разработчиков
Собери 10 пакетов перцев с теплицы
Создание мемов без фотошопа: простые приемы
Сравнение Arsys хостинг сервисов для блогеров с WordPress на 2023 год
VDSina для новичков: советы для начала
Весь экран под циферблат
Видеочат с минимальной задержкой
Виртуальная девушка ИИ
Вложения в компании
Введение в нейросети бесплатно