Search
Write a publication
Pull to refresh

Подключение к нескольким Linux-серверам по SSH без ввода пароля: пошаговое руководство

Level of difficultyMedium
Reading time4 min
Views6.6K

Привет, друзья! Я давно работаю с Linux-серверами, и одна из вещей, которая меня всегда раздражала, — это постоянный ввод паролей при подключении по SSH. Представьте: у вас несколько локальных машин, и каждый раз стучать по клавишам, вспоминая, какой там пароль... Но есть простое решение — использовать SSH-ключи. Это как цифровой пропуск: один раз настроил, и дальше всё идёт как по маслу. В этой статье я расскажу, как это сделать шаг за шагом, особенно если вы новичок в Linux или SSH.

Сначала пару слов о том, что такое SSH.

SSH (Secure Shell) — это протокол для безопасного удалённого доступа к серверу. Он шифрует все данные, так что никто не подслушает ваш пароль или команды. Обычно вы подключаетесь командой вроде ssh user@ip-адрес, и сервер просит пароль. Но с ключами пароль не нужен — аутентификация происходит автоматически через криптографию.

Ключевой момент: вам не обязательно создавать отдельный ключ для каждого сервера. Один хороший ключ можно "раздать" на все машины, куда вы хотите подключаться. Это экономит время и силы. Я так делаю уже давно, и это реально упрощает жизнь, особенно если у вас кластер серверов или виртуалки в домашней сети.

Шаги по настройке

Шаг 1: Генерация SSH-ключа (делается один раз)

Сначала нужно создать пару ключей: приватный и публичный. Это как замок и ключ — приватный ключ остаётся у вас, а публичный "замок" ставится на серверах.

Откройте терминал (на Windows это может быть PowerShell или Git Bash, если у вас установлен Git). Введите команду:

ssh-keygen -t ed25519 -C "your_email@example.com"

Разберём, что здесь происходит:

  • ssh-keygen: Это утилита для генерации ключей. Она входит в стандартный набор OpenSSH, который обычно уже установлен на большинстве систем.

  • -t ed25519: Опция для типа ключа. Ed25519 — это современный алгоритм, он быстрый, безопасный и компактный.

  • -C "your_email@example.com": Это комментарий, который добавляется к ключу. Не обязательно, но полезно для идентификации — например, если у вас несколько ключей. Замените на свой реальный email.

Когда запустите команду, она спросит, куда сохранить файлы. По умолчанию это C:\Users\<ваше_имя>\.ssh\id_ed25519 (на Windows) или ~/.ssh/id_ed25519 (на Linux/Mac). Если предложит перезаписать существующий ключ — не соглашайтесь, если не хотите потерять старый.

Затем попросит ввести passphrase (пароль для ключа). Это опционально, но рекомендую поставить — это дополнительная защита. Если passphrase нет, то подключение будет полностью автоматическим, но если кто-то украдёт ваш приватный ключ, то получит доступ ко всему. С passphrase ключ "заперт" до ввода пароля, но для автоматизации (например, в скриптах) это может быть неудобно.

В итоге создастся два файла:

  • id_ed25519 — приватный ключ. Это ваш "секретный ключ", никогда не копируйте его на другие машины!

  • id_ed25519.pub — публичный ключ. Его можно раздавать направо и налево.

Если у вас Windows, проверьте папку .ssh в вашем профиле. Если её нет — создастся автоматически.

Шаг 2: Копирование публичного ключа на серверы

Теперь нужно "установить" публичный ключ на каждый сервер. Для этого есть удобная команда ssh-copy-id.

Для каждого сервера выполните:

ssh-copy-id -i "C:\Users\<ваше_имя>\.ssh\id_ed25519.pub" user@IP-адрес

Объясняю параметры:

  • -i "путь_к_публичному_ключу": Указывает, какой ключ копировать. Замените на реальный путь.

  • user@IP-адрес: Здесь user — имя пользователя на сервере (например, administrator или root), а IP-адрес — адрес сервера, вроде 192.168.98.98.

При первом запуске команда попросит пароль (да, в последний раз!). Она подключится по SSH, добавит ваш публичный ключ в файл ~/.ssh/authorized_keys на сервере и выйдет. Повторите это для всех серверов.

Если ssh-copy-id не работает (на старых системах), можно вручную: скопируйте содержимое id_ed25519.pub (откройте в notepad, например), подключитесь к серверу по SSH с паролем, создайте файл ~/.ssh/authorized_keys (если нет), и вставьте строку ключа в конец файла. Не забудьте установить права: chmod 600 ~/.ssh/authorized_keys.

Шаг 3: (Опционально) Настройка файла config для удобства

Чтобы не набирать каждый раз длинные команды вроде ssh admin@192.168.98.98, создайте файл ~/.ssh/config (на Windows C:\Users\<ваше_имя>\.ssh\config). Это как адресная книга для SSH.

Откройте файл в редакторе (notepad подойдёт) и добавьте блоки вроде:

Host server1
    HostName 192.168.98.98
    User admin
    IdentityFile ~/.ssh/id_ed25519

Host server2
    HostName 192.168.98.214
    User administrator
    IdentityFile ~/.ssh/id_ed25519
  • Host server1: Это псевдоним, как вы будете вызывать сервер.

  • HostName: Реальный IP или домен.

  • User: Имя пользователя по умолчанию.

  • IdentityFile: Путь к приватному ключу.

Сохраните файл. Теперь подключение — просто ssh server1. Круто, правда?

Шаг 4: Проверка подключения

Теперь попробуйте: ssh server1.

Если всё ок, подключится без пароля. Если попросит passphrase— введите (если ставили).

Как это работает под капотом

Давайте разберёмся, почему это работает, чтобы не было магии. SSH-ключи основаны на асимметричной криптографии (public-key cryptography). При генерации создаётся пара:

  • Приватный ключ: Хранится только у вас, используется для "подписи" запроса на подключение.

  • Публичный ключ: Открытый, размещается на серверах в authorized_keys.

Когда вы подключаетесь, клиент (ваш компьютер) отправляет запрос: "Эй, сервер, у меня есть приватный ключ, соответствующий этому публичному". Сервер генерирует случайный вызов, клиент "подписывает" его приватным ключом, сервер проверяет подпись публичным ключом. Если совпадает — добро пожаловать!

Публичный ключ не секрет, потому что им нельзя "взломать" приватный. Но приватный — да, это ваш главный актив.

Заключение

Вот и всё! Теперь вы можете подключаться к куче серверов без паролей.😊

Tags:
Hubs:
-7
Comments43

Articles