Настройка аутентификации по SSH ключам — самый надёжный способ подключения к VPS или выделенному серверу. Публичный ключ размещается на удаленном сервере, приватный ключ остаётся только у вас на локальном компьютере — это полностью исключает перехват пароля и повышает безопасность.
Создание отдельной учетной записи на сервере с Linux Ubuntu #
# создаем учетную запись:
sudo adduser deployer
# разрешаем выполнять команды с привилегиями администратора
sudo usermod -aG sudo deployer
# если нужно переключиться сразу на созданную учетку:
sudo - deployer
Генерация пары ключей на компьютере с Linux #
ssh-keygen -t ed25519 -C "your_email@example.com"
Что это делает:
-t ed25519— указывает современный и безопасный тип ключа-C— добавляет комментарий (часто используется email для идентификации)
По умолчанию ключи сохраняются в ~/.ssh/id_ed25519 и ~/.ssh/id_ed25519.pub:
d_ed25519— приватный ключ (никому не передавайте!)id_ed25519.pub— публичный ключ (его копируем на сервер)
Копирование публичного ключа на сервер #
Вариант 1. Скопировать ключ одной командой с вашего компьютера (рекомендуется):
# стандартный порт:
ssh-copy-id deployer@IP_сервера
# если, используется нестандартный порт:
ssh-copy-id -p 5222 deployer@IP_сервера
# или, если требуется указать путь к публичному ключу:
ssh-copy-id -i ~/.ssh/id_ed25519.pub deployer@IP_сервера
Вариант 2. Скопировать ключ вручную, если ssh-copy-id недоступен:
# создаем на папку .ssh (если её нет):
cat ~/.ssh/id_ed25519.pub | ssh deployer@IP_сервера "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Настройка сервера OpenSSH #
# откроем конфигурационный файл:
nano /etc/ssh/sshd_config
# включаем авторизацию по ключам и отключаем по паролю (рекомендуется):
PubkeyAuthentication yes
PasswordAuthentication no
# перезапускаем SSH-сервер:
systemctl restart sshd
Проверка #
# попробуем подключиться без пароля:
ssh deployer@IP_сервера
# если, используется нестандартный порт:
ssh -p 5222 deployer@IP_сервера
Если вам не удается подключиться с использованием ключа, проверьте логи клиента и сервера SSH:
# клиент:
ssh -v deployer@IP_сервера
# сервер:
sudo journalctl -u ssh
Дополнительная настройка SSH клиента на компьютере #
# создаем или отредактируем файл ~/.ssh/config на вашем компьютере:
nano ~/.ssh/config
Host my-server
HostName IP_сервера
User deployer
IdentityFile ~/.ssh/id_ed25519
Port 22
# теперь подключение упрощается до:
ssh my-server
Если при создании ключа была задана фраза-пароль, вас попросят ввести ее для расшифровки ключа. Если фраза-пароль не задана, аутентификация пройдет автоматически.