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

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

В этом руководстве мы настроим SSH-ключи для CentOS 7

Генерация пары RSA-ключей

  • Откройте терминал
# ssh-keygen
Enter file in which to save the key (/home/<username>/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

Enter same passphrase again:
Your identification has been saved in /home/<username>/.ssh/id_rsa.
Your public key has been saved in /home/<username>/.ssh/id_rsa.pub.

The key fingerprint is: SHA256:gGJtSsV8BM+7w018d39Ji57F8iO6c0N2GZq3/RY2NhI
[email protected]
The key's randomart image is:

+---[RSA 3072]----+
| ooo. |
| oo+. |
| + +.+ |
| o + + E . |
| . . S . . =.o|
| . + . . [email protected]|
| + . oo*=O|
| . . .+=o+|
| o=ooo+|
+---- [SHA256] -----+

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

Загрузите ваш открытый ключ

Есть несколько способов загрузить ваш открытый ключ

1. Используя ssh-copy-id

ssh-copy-id – это утилита, доступная в некоторых операционных системах, которая может копировать открытый ключ SSH на удаленный сервер через SSH.

# ssh-copy-id [email protected]_host

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/your_username/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys [email protected]_host password:

Number of key(s) added: 1

Теперь попробуйте войти в систему с помощью: “ssh ‘username @ remote_host'” и убедитесь, что были добавлены только те ключи, которые вы хотели.

2. Используя Secure Copy (scp)

Secure Copy (scp) – это инструмент, который копирует файлы с локального компьютера на удаленный сервер через SSH

Подключитесь к вашему серверу через SSH пользователем, которому вы хотите добавить свой ключ:

# ssh [email protected]_host

Создайте католог ~/.ssh и файл authorized_keys если они еще не существуют::

# mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys

Присвойте каталогу ~/.ssh и файлам authorized_keys соответствующие права:

# chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

В терминале на вашем локальном компьютере, используйте scp, чтобы скопировать содержимое вашего открытого ключа SSH publickey(id_rsa.pub) в файл authorized_keys на вашем сервере.

# scp ~/.ssh/id_rsa.pub [email protected]_host:~/.ssh/authorized_keys

Теперь вы можете войти на сервер с вашим ключом.

3. Копирование открытого ключа вручную

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

Мы вручную добавим содержимое вашего файлаid_rsa.pub в файл ~/.ssh/authorized_keys на вашем удаленном компьютере.

Для отображения содержимого вашего ключа id_rsa.pub key, введите следующую команду на вашем локальном компьютере:

# cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyVGaw1PuEl98f4/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWmDKljtv1dmSBCrTmEAQaOorxqGGBYmZS7NQumRe4lav5r6wOs8OACMANE1ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUzzjl1Jwku3bnRaCcjaxH8oTumt1a00mWci/1qUlaVFft085yvVq7KZbF2OPPbl+erDW91+EZ2FgEi+v1/CSJ5 [email protected]

Обратите внимание, что открытый ключ начинается с ssh-rsa  и заканчивается [email protected]

Скопируйте этот текст, подключитесь к вашему серверу через SSH пользователем, к которому вы хотите добавить свой ключ:

# ssh [email protected]_host

Создайте католог ~/.ssh и файл authorized_keys если они еще не существуют:

# mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys

Присвойте каталогу ~/.ssh и файлам authorized_keys соответствующие права:

# chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

Откройте файл authorized_keys в текстовом редакторе. Затем вставьте содержимое вашего открытого ключа, который вы скопировали на первом этапе, в новую строку в конце файла. Сохраните и закройте файл.

Теперь вы можете войти на сервер с вашим ключом.

Создание SSH ярлыков(сокращений)

Вместо использования SSH на IP-адресе, который вы наверняка забудете, вместо этого вы можете использовать ярлыки(сокращения)

# cd ~/.ssh

# vi config

Добавьте запись для каждого сервера, к которому вы хотите подключиться, например:

Host test
   HostName remote_host
   Port 22
   User your_username
   IdentityFile ~/.ssh/id_rsa

Теперь вы можете подключится к серверу с помощью ярлыка(сокращения).

# ssh test

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