Как настроить SSH-ключи и кодовую фразу для сервера

безопасностьSSH
29 апр. 2016обн. 09 июн. 2026

5 мин. чтения

Как настроить SSH-ключи и кодовую фразу для сервера

Основные тезисы статьи

  • SSH-ключи позволяют входить на сервер безопаснее, чем по паролю: доступ строится на паре ключей, где публичный хранится на сервере, а приватный остается у владельца. Кодовая фраза дополнительно защищает ключ, если файл попадет к посторонним.
  • В статье объясняется, как создать RSA-пару, установить ключи, скопировать открытый ключ на сервер, настроить вход по SSH и отключить парольный root-доступ, чтобы снизить риск брутфорса и случайной компрометации сервера и доступа.

Введение

SSH-ключи позволяют авторизоваться на виртуальном сервере более безопасным, чем используя пароль, путем – при помощи SSH. В то время как сервер можно взломать, если использовать метод подбора пароля (брутфорс), расшифровать SSH-ключи только этим способом практически невозможно.

SSH представляет из себя пару ключей, один из которых открытый (публичный), а другой закрытый (или приватный, и он есть только у вас). Если нужно перейти от теории к настройке, пригодится материал «Инструкция по настройке VDS: базовая конфигурация и работа с LEMP».

Сначала вы помещаете файл с публичным ключом на свой SSH-сервер, а затем подключаетесь к серверу, используя приватный ключ. Корректная работа возможна только при наличии обоих ключей – и именно благодаря этому ваше сообщение будет безопасным, и при этом вам не нужно использовать пароль. Вы можете усилить безопасность такого способа авторизации, активировав для закрытого ключа запрос кодовой фразы.

Шаг 1 - Создайте пару RSA-ключей

Сначала вам необходимо создать пару ключей:

ssh-keygen -t rsa

Шаг 2 - Установите ключи и пароль

Как только вы введете команду генерации ключей, вам нужно будет определиться со следующим параметром:

Enter file in which to save the key (/home/yourdirect/.ssh/id_rsa):

Можете просто нажать Enter, и тогда файл будет сохранен в выбранную выше директорию по умолчанию.

Enter passphrase (empty for no passphrase):

Использование кодовой фразы является необязательным и остается на ваше усмотрение. Однако установка кодовой фразы имеет свое преимущество: если ваш закрытый ключ попадет в руки к злоумышленникам, они не смогут войти в аккаунт до тех пор, пока не подберут кодовое слово, а значит, у вас будет дополнительное время для принятия необходимых мер. Единственный недостаток использования кодового слова – это, естественно, необходимость вводить его каждый раз, когда вы авторизуетесь через SSH. Когда дойдете до практики, дополнительно посмотрите инструкцию «Как подключиться к виртуальному серверу VPS/VDS».

Полностью процесс создания ключей имеет такое кодовое выражение:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/yourdirect/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/yourdirect/.ssh/id_rsa.
Your public key has been saved in /home/yourdirect/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 yourdirect@a
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+-----------------+

Местоположение публичного ключа теперь – /home/yourdirect/.ssh/id_rsa.pub, а закрытого – /home/yourdirect/.ssh/id_rsa.

Чтобы лучше понимать техническую часть настройки, дополнительно разберите, что такое CSR и как его создать.

Шаг 3 – копирование открытого ключа

После того, как вы создали пару ключей, необходимо добавить открытый ключ на нужный вам виртуальный сервер. Для практического продолжения темы полезно отдельно посмотреть, как подключить сервер базы данных к Sourcemod [Source | MariaDB].

Вы можете сделать это двумя способами:

  • Либо используя команду ssh-copy-id , чтобы скопировать на сервер в authorized_keys :
ssh-copy-id user@123.45.56.78
  • Либо копируя ключи при помощи SSH:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Вне зависимости от выбранной команды вы увидите следующее (с вашими данными):

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
user@12.34.56.78's password:
Now try logging into the machine, with "ssh 'user@12.34.56.78'", and check in:
 ~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

После этого вы можете авторизоваться как пользователь (user@12.34.56.78), и пароль не будет запрошен.

Шаг 4 – Деактивировать пароль для root-доступа

Это шаг не является обязательным.

Как только вы скопировали ваши SSH-ключи и удостоверились, что можете авторизоваться через SSH, вы можете ограничить доступ к правам суперпользователя (чтобы можно было заходить только через SSH).
Для этого откройте файл настройки SSH:

sudo nano /etc/ssh/sshd_config

Внутри этого файла вы найдете параметр PermitRootLogin – измените его так, чтобы пользователи могли авторизоваться только через SSH-соединение:

PermitRootLogin without-password

Чтобы изменения вступили в силу, введите:

reload ss

Запустите свой сервер Timeweb

29 апр. 2016обн. 09 июн. 2026