SSH-ключи — это не просто очередная заморочка для тех, кто любит всё усложнять. Это реально мощная штука, если ты хоть иногда подключаешься к серверам по SSH. Задолбался вводить пароли? Боишься, что кто-то их перехватит? Вот тут и приходят на помощь ключи. Это и быстро, и безопасно, и вообще must-have для любого админа, девопса, да и просто продвинутого пользователя.
Зачем вообще нужны SSH-ключи?
Пароли — это прошлый век. Их можно подобрать, перехватить, кто-то может поставить кейлоггер, да и просто лень их держать в голове. SSH-ключи — это пара: приватный ключ (только у тебя) и публичный (на сервере). С ключами ты получаешь:
- Быстрый вход без пароля;
- Защиту от перебора паролей и фишинга;
- Возможность автоматизации (деплой, CI/CD);
- Меньше головняка с безопасностью.
Что потребуется?
- Любой Linux (Ubuntu, Debian, CentOS, Fedora — не важно);
- Доступ к терминалу (локально или через консоль);
- Желательно свежий
openssh
(почти всегда уже стоит); - Минимум 5 минут свободного времени и желание разобраться.
Генерация SSH-ключей: пошаговая инструкция
- Проверь, установлен ли OpenSSH:
ssh -V
Должно вывести версию. Если не установлен —sudo apt install openssh-client
(илиyum
/dnf
для CentOS/Fedora). - Генерируем ключи:
ssh-keygen -t ed25519 -C "your_email@example.com"
-t ed25519
— современный и быстрый алгоритм (лучше, чем старый RSA);-C
— просто комментарий, чтобы не забыть, чей ключ.
Можно использовать
-t rsa -b 4096
, если сервер не поддерживает ed25519. - Следуй инструкциям:
Тебя попросят указать путь для сохранения (жми Enter, чтобы сохранить в~/.ssh/id_ed25519
), и придумать passphrase. Passphrase — это как второй пароль, но если не хочешь каждый раз вводить, можешь оставить пустым (но тогда не теряй приватный ключ!). - Проверь, что ключи создались:
ls ~/.ssh/
Должны появиться файлыid_ed25519
(приватный) иid_ed25519.pub
(публичный). - Добавь публичный ключ на сервер:
Если есть доступ по паролю:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
Или вручную:
cat ~/.ssh/id_ed25519.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Использование SSH-ключей: команды и фишки
- Базовое подключение:
ssh user@server_ip
Ключ подхватится автоматически, если он в~/.ssh/
. - Если ключ не стандартный:
ssh -i /путь/к/ключу user@server_ip
- Агент SSH (чтобы не вводить passphrase 100 раз):
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
- Конфиг для удобства:
В~/.ssh/config
можно прописать:Host myserver HostName server_ip User user IdentityFile ~/.ssh/id_ed25519 Port 22
Теперь
ssh myserver
— и ты на сервере. - Разные ключи для разных серверов:
Просто генерируй новые пары (ssh-keygen -f ~/.ssh/id_ed25519_another
) и прописывай их в конфиге.
Типичные ошибки — как делать не надо
- Не хранить приватный ключ на общедоступных или ненадёжных машинах.
- Не копировать приватный ключ на сервер (только публичный!).
- Не выставлять права
chmod 600 ~/.ssh/id_ed25519
иchmod 700 ~/.ssh
— иначе SSH откажется работать. - Не отправлять ключи через мессенджеры, почту и т.д.
- Не использовать слабые алгоритмы (
dsa
,rsa
с маленькой длиной).
Реальный пример из жизни
На реальном проекте (например, при деплое через GitLab CI/CD) тебе нужно, чтобы пайплайн мог деплоить на сервер без пароля. Генерируешь отдельную пару ключей, приватный ключ добавляешь в переменные CI/CD, публичный — на сервер. Теперь деплой автоматом, без паролей и лишних заморочек. А если ключ скомпрометирован — просто удаляешь его из authorized_keys
, не меняя пароли.
Заключение
SSH-ключи — это реально просто, если один раз разобраться. Безопаснее, удобнее, быстрее. Не ленись, настрой себе ключи — и забудь про пароли на серверах. Если хочется покопать глубже, вот отличная официальная документация:
Если остались вопросы или что-то не работает — гугли ошибку, пиши на Stack Overflow, Reddit или в комменты под этим постом, разберёмся!
Ваш отзыв