Перейти к основному содержимому

Настройка доступа на Linux сервер по SSH ключам

·340 слов·2 минут
Блог о Сетях, Инфраструктуре и DevOps
Автор
Блог о Сетях, Инфраструктуре и DevOps
DevOps, Infrastructure Engineer, Expert Cyber Security

Настройка аутентификации по 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

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

Related

Использование TLS клиента OpenSSL для тестирования HTTPS
·955 слов·5 минут
Настройка GRE over IPSec
·1039 слов·5 минут
Lazydocker для Docker
·89 слов·1 минута