Создайте подобный сайт на WordPress.com
Начало работы

Настройка SSH по ключу

Когда у нас настроен классический доступ по SSH, то от нас требуется знать логин, пароль, и номер SSH-порта (если он вдруг изменён. SSH порт по умолчанию TCP 22)

Если у Вас в распоряжении, есть 2-3 сервера, то проблем возникнуть не должно, но если у Вас много linux-машин, постоянно вводить пароль будет очень неудобно. Для того, чтобы упростить доступ, был придуман доступ по SSH-ключу.

Как работает авторизация пользователя по ключу?

На linux-машине генерируется 2 ключа: открытый и закрытый. Открытый ключ отправляется на другой сервер, к которому планируется настроить доступ без пароля. С помощью открытого ключа шифруются сообщения. Закрытый ключ нужен для того, чтобы расшифровать сообщения, зашифрованные открытым ключом. Если доступ к закрытому ключу будет получен злоумышленниками, то доступ будет скомпрометирован.

Настройка доступа по SSH-ключу между двумя linux-машинами

У нас есть два linux-сервера: Debian 10 (10.166.0.3) и CentOS 7 (10.166.0.4). Начнём настраивать доступ по ключу с сервера CentOS 7.

  1. По умолчанию ключи хранятся в скрытой папке пользователя. (/home/user/.ssh). Проверяем что на серверах данная папка есть:
#На CentOS 7 (10.166.0.4)
[tv1n94@c7-ssh ~]$ ls -la
total 12
drwx------. 3 tv1n94 tv1n94  74 Jan 10 14:29 .
drwxr-xr-x. 4 root   root    35 Jan 10 14:29 ..
-rw-r--r--. 1 tv1n94 tv1n94  18 Apr  1  2020 .bash_logout
-rw-r--r--. 1 tv1n94 tv1n94 193 Apr  1  2020 .bash_profile
-rw-r--r--. 1 tv1n94 tv1n94 231 Apr  1  2020 .bashrc
drwx------. 2 tv1n94 tv1n94   6 Jan 10 14:32 .ssh
[tv1n94@c7-ssh ~]$ 

#На Debian 10 (10.166.0.3)
tv1n94@d10-ssh:~$ ls -la
total 28
drwxr-xr-x 4 tv1n94 tv1n94 4096 Jan 10 14:50 .
drwxr-xr-x 4 root   root   4096 Jan 10 14:29 ..
-rw-r--r-- 1 tv1n94 tv1n94  220 Apr 18  2019 .bash_logout
-rw-r--r-- 1 tv1n94 tv1n94 3526 Apr 18  2019 .bashrc
drwx------ 3 tv1n94 tv1n94 4096 Jan 10 14:50 .gnupg
-rw-r--r-- 1 tv1n94 tv1n94  807 Apr 18  2019 .profile
drwx------ 2 tv1n94 tv1n94 4096 Jan 10 14:50 .ssh
tv1n94@d10-ssh:~$ 

2. На CentOS 7 выполняем генерацию открытого и закрытого ключа. Предварительно нужно проверить, что нет сгенерированных ключей. Если уже есть сгенерированные ключи, то заново генерировать не нужно.

[tv1n94@c7-ssh ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tv1n94/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/tv1n94/.ssh/id_rsa.
Your public key has been saved in /home/tv1n94/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:+LjfzdcTs8vGeGqliDfn1WZK/zQC0JNwwJr1SttRsCk tv1n94@c7-ssh
The key's randomart image is:
+---[RSA 2048]----+
|        .o.o.    |
|         o+ +.   |
|        +E.*.    |
|       + .oo.    |
|      . S +..    |
|       o o ..  +.|
|      . . . ..*+O|
|       . o * *=%o|
|      ... o B+=o*|
+----[SHA256]-----+
[tv1n94@c7-ssh ~]$ 

При генерации ключей будет запрошен путь к их расположению и пароль на использование ключа. Если вы всё планируете оставить без изменений (стандартный путь и ключ без пароля), то можно просто 3 раза нажать на Enter. Если вы введете пароль на использование ключа, то его нужно будет вводить при каждом подключении к другим серверам.

3. В папке .ssh у нас должно появится 2 ключа (id_rsa — закрытый и id_rsa.pub — открытый). Открытый ключ нужно отправить на сервер Debian 10 (10.166.0.3).

#Проверяем, что ключи были созданы
[tv1n94@c7-ssh ~]$ ls -la .ssh/
total 8
drwx------. 2 tv1n94 tv1n94   38 Jan 10 14:53 .
drwx------. 3 tv1n94 tv1n94   74 Jan 10 14:29 ..
-rw-------. 1 tv1n94 tv1n94 1679 Jan 10 14:53 id_rsa
-rw-r--r--. 1 tv1n94 tv1n94  395 Jan 10 14:53 id_rsa.pub
[tv1n94@c7-ssh ~]$ 

#Копируем открытый ключ на другой сервер
[tv1n94@c7-ssh ~]$ ssh-copy-id -i .ssh/id_rsa.pub tv1n94@10.166.0.3
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".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
tv1n94@10.166.0.3's password: 

Number of key(s) added: 1

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

#Пытаемся подключиться
[tv1n94@c7-ssh ~]$ ssh 10.166.0.3
Linux d10-ssh 4.19.0-13-cloud-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jan 10 14:50:57 2021 from 35.235.240.176
tv1n94@d10-ssh:~$ 
tv1n94@d10-ssh:~$ 

Если вдруг на linux-машине нет утилиты ssh-copy-id, то нам нужно просто перенести ключ id_rsa.pub на другой сервер в папку .ssh. Например, можно использовать утилиту scp.

На данном этапе мы настроили доступ по ключу с сервера CentOS 7 на сервер Debian 10. Давайте теперь настроим доступ по ключу с сервера Debian 10 на сервер CentOS 7:

#Генерируем ключи
tv1n94@d10-ssh:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tv1n94/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/tv1n94/.ssh/id_rsa.
Your public key has been saved in /home/tv1n94/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:JQM6VM85NpcmV2yLPOeXwpiHmo7ltNl2cEbF0QdQ9qg tv1n94@d10-ssh
The key's randomart image is:
+---[RSA 2048]----+
|    ..o    .o+=+ |
|   . . + . oo.ooo|
|    o   @.*o o. o|
|     . . @+ +.   |
|        S  XE  . |
|          = B o  |
|        oo = o   |
|       =o+. .    |
|      ..=...     |
+----[SHA256]-----+

#Отправляем открытый ключ на сервер CentOS 7 
tv1n94@d10-ssh:~$ ssh-copy-id -i .ssh/id_rsa.pub tv1n94@10.166.0.4
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".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
tv1n94@10.166.0.4's password: 

Number of key(s) added: 1

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

#Пробуем залогиниться
tv1n94@d10-ssh:~$ ssh 10.166.0.4
Last failed login: Sun Jan 10 15:17:19 UTC 2021 from d10-ssh.europe-north1-a.c.psychic-root-276212.internal on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Sun Jan 10 14:29:22 2021 from 35.235.240.176
[tv1n94@c7-ssh ~]$ exit
logout
Connection to 10.166.0.4 closed.
tv1n94@d10-ssh:~$ 

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

Когда используется много серверов, сложно удержать в голове все ip-адреса, для того, чтобы можно было логиниться на сервер с помощью его доменного имени, нужно внести данный сервер в файл /etc/hosts

[root@c7-ssh tv1n94]# vi /etc/hosts
#Пример файла /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.166.0.4 c7-ssh
10.166.0.3 d10-ssh

#Попробуем залогиниться по доменному имени
[tv1n94@c7-ssh ~]$ ssh d10-ssh
The authenticity of host 'd10-ssh (10.166.0.3)' can't be established.
ECDSA key fingerprint is SHA256:FOJ8Uot3DriaFAfXdFZwFL5CEXSNOEqEXh52O4F2OMY.
ECDSA key fingerprint is MD5:d2:5d:89:22:c7:5b:6d:fe:a7:c6:50:0f:a1:de:86:3f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'd10-ssh' (ECDSA) to the list of known hosts.
Linux d10-ssh 4.19.0-13-cloud-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jan 10 15:08:04 2021 from 10.166.0.4
tv1n94@d10-ssh:~$ 

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

%d такие блоггеры, как: