Пост

SSH-авторизация по ключу (сертификату) в Centos

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

  • Открытый ключ (public key): доступен всем и используется для шифрования данных при отправке запроса на сервер.
  • Приватный ключ (private key): хранится только на локальном компьютере и используется для расшифровки данных, полученных от сервера.

Есть виртуальная инфраструктура на базе Proxmox, где один виртуальный сервер выполняет роль основного сервера (dev, nginx-proxy) и имеет внешний IP. И есть куча дополнительный виртуальных серверов.

Задача: необходимо настроить возможность авторизоваться с dev-сервера на другие сервера по внутренним IP адресам без ввода пароля.

Подключаемся к dev-серверу и создаем открытый и закрытый ключи

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@localhost]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:rHLydfgdfgdfgcvbcvbcvbG3GM9tosDSERPfsEW8 root@ct-dev-01
The key's randomart image is:
+---[RSA 2048]----+
|^/o. .           |
|*=@=o o          |
|.*+*o+ E         |
|+.+ o o.         |
|+o.  .  S        |
|+.     .         |
|..  o.o.         |
|  . .=. .        |
|  .o  ..         |
+----[SHA256]-----+

В результате выполнения команды сгенерировалось 2 файла в каталоге ~/.ssh/

  • id_rsa.pub — публичный ключ
  • id_rsa — секретный ключ

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

1
2
3
4
5
6
7
8
9
10
$ sudo ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.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]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Проверяем:

1
2
3
4
5
6
$ sudo ssh [email protected]
Last login: Wed Oct  2 09:48:44 2019 from 192.168.12.2
$ ls -la .ssh
total 9
-rw------- 1 root root 396 Oct  2 09:48 authorized_keys
-rw-r--r-- 1 root root 193 Sep 19 10:47 known_hosts

На сервере, которому мы передали публичный ключ, появился файл authorized_keys. Содержимое этого файла и есть содержимое публичного ключа. Таким образом, используя команду ssh-copy-id можно передать публичный ключ всем серверам, к которым в последствии мы будем подключаться.

Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.