Если ты часто работаешь с удалёнными серверами, VPS или просто хочешь один раз настроить и больше не вводить пароль при каждом ssh
— добро пожаловать в мир беспарольного SSH-доступа.
Это не просто удобно. Это:
* 💥 Быстро — экономишь десятки минут в неделю;
* 🔒 Безопасно — криптография надёжнее любого пароля;
* 🤖 Автоматизируемо — идеально для скриптов и DevOps;
* 🔧 Подходит как для фрилансера, так и для компании с сотнями серверов.
Обычный SSH требует пароль. Но можно настроить доступ по открытому и закрытому ключу, где система сама тебя узнаёт, без необходимости ввода пароля.
Как это работает?
* На клиенте генерируется пара ключей (открытый и закрытый);
* Открытый ключ копируется на сервер;
* Когда ты подключаешься, система сверяет твой закрытый ключ с тем, что есть на сервере — и если всё ок, впускает тебя.
### 1. Генерируем ключ
На локальной машине (где будешь подключаться к серверу):
ssh-keygen -t rsa -b 4096
*
-t rsa
— тип ключа.*
-b 4096
— длина ключа. Чем больше — тем безопаснее.* При генерации можно задать путь сохранения ключа и кодовую фразу (если хочешь дополнительную защиту).
> По умолчанию ключи сохраняются в
~/.ssh/id_rsa
(приватный) и ~/.ssh/id_rsa.pub
(открытый).### 2. Проверяем, что ключи созданы
ls ~/.ssh/id_*.pub
Если вывод есть — всё в порядке.
### 3. Копируем открытый ключ на сервер
Самый простой и быстрый способ:
ssh-copy-id user@IP_Сервера
> Введи пароль один раз — и больше не придётся.
Если
ssh-copy-id
недоступен, воспользуйся ручной командой:cat ~/.ssh/id_rsa.pub | ssh user@IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Или скопируй содержимое
id_rsa.pub
и вручную вставь в ~/.ssh/authorized_keys
на сервере.### 4. Проверяем вход
Подключись по SSH:
ssh user@IP_Сервера
Пароль не запрашивается? Поздравляю, ты настроил беспарольный SSH.
* Посмотреть открытый ключ:
cat ~/.ssh/id_rsa.pub
* Задать правильные права:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
На сервере:
1. Открываем конфиг:
sudo nano /etc/ssh/sshd_config
2. Меняем строки:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
3. Перезапускаем SSH:
sudo systemctl restart ssh # или sshd для CentOS
Теперь на сервер можно попасть только по ключу — даже при знании пароля это будет невозможно.
Если вдруг передумал — включи обратно
PasswordAuthentication yes
и перезапусти ssh-сервис.* Работаешь с VPS или облаками? Это must-have.
* Автоматизируешь деплой или бэкапы? Не обойтись без ключей.
* Делаешь pet-проекты? Займись безопасностью с самого начала.
* Просто надоело каждый раз вводить пароль? Вот твой лайфхак.
#linux #doc #cheatsheet