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

Поехали — проверяем, есть ли ключи

Чтобы не создавать новую пару ключей, если они уже есть, забей:

ls -l ~/.ssh/id_*.pub

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

Генерируем новый ключ, потому что старые — это прошлый год

ssh-keygen -t rsa -b 4096 -C "your_email@domain.com" 

Жмёшь Enter, чтобы сохранить в стандартное место ~/.ssh/id_rsa. Если хочешь, чтобы никто без твоего ведома не залез — ставь парольную фразу. Нет — просто Enter и дальше.

Кидаем ключ на сервер, чтобы не вводить пароли

Самый простой способ — команда:

ssh-copy-id remote_username@server_ip_address

Вводишь пароль один раз, и больше не мучаешься. Если ssh-copy-id по какой-то причине нет — скопируй вручную:

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys" 

Проверяем, работает ли

Пробуй войти так:

ssh remote_username@server_ip_address

Если пароль не спросили — ты почти бог SSH. Если спросили парольную фразу — тоже нормально, так и задумано.

Выключаем пароли (осторожно, не потеряй ключ!)

Чтобы не дать ботам и хакерам шансов, выключи вход по паролю. Но только если ты точно можешь войти по ключу и у тебя есть sudo.

Открываешь на сервере:

sudo nano /etc/ssh/sshd_config

И меняешь там:

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no 

Перезапускаешь SSH:

sudo systemctl restart ssh

Всё, теперь твой сервер не пускает по паролю и живёт в безопасности. SSH — инструмент мощный, просто используй его нормально.