Ответ
Настройка входа по SSH-ключу — стандартная практика для повышения безопасности и удобства. Я настраиваю это так:
1. Генерация ключевой пары на клиентской машине (если её нет):
# Использую алгоритм Ed25519 (рекомендуется) или RSA 4096
ssh-keygen -t ed25519 -C "your_email@example.com"
# Или
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Ключи по умолчанию сохраняются в ~/.ssh/id_ed25519 (приватный) и ~/.ssh/id_ed25519.pub (публичный).
2. Копирование публичного ключа на сервер:
Самый простой способ — утилита ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip
Она автоматически добавит ключ в ~/.ssh/authorized_keys на сервере.
Если ssh-copy-id недоступна, делаю вручную:
# На клиенте выводим публичный ключ
cat ~/.ssh/id_ed25519.pub
# Копируем вывод, затем на сервере выполняем:
mkdir -p ~/.ssh
echo "<вставленный_публичный_ключ>" >> ~/.ssh/authorized_keys
3. Критически важный шаг — настройка прав доступа на сервере: Неправильные права могут привести к отказу в аутентификации.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R $USER:$USER ~/.ssh
4. (Опционально) Повышение безопасности сервера:
Редактирую /etc/ssh/sshd_config и применяю изменения.
sudo nano /etc/ssh/sshd_config
Рекомендуемые параметры:
PubkeyAuthentication yes
PasswordAuthentication no # Отключаем парольную аутентификацию
PermitRootLogin no # Запрещаем вход root по SSH
После правок перезагружаю демон: sudo systemctl restart sshd.
Важное предупреждение: Прежде чем отключать PasswordAuthentication, необходимо убедиться, что вход по ключу работает, и оставить хотя бы одну активную сессию SSH на случай ошибок.