📝
Как это работает?

Приватный ключ хранится у вас (пользователя). А публичный ключ хранится на удаленной машине.

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

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

Нужно создать ключ, командой на локальной машине:

1
ssh-keygen

Вас попросит ввести имя ключа.

Желательно генерировать ключ со стандартным именем, то есть не давать ему названия (обычно это id_rsa).

Далее нужно придумать кодовую фразу. Если ее не вводить, вход будет полностью без пароля (не рекомендую).

Вывод:

Generating public/private rsa key pair.
...
Your identification has been saved in /.ssh/id_rsa
Your public key has been saved in /.ssh/id_rsa.pub
The key fingerprint is:
SHA256:*** ***@***
The key's randomart image is:
+---[RSA 3072]----+
| *************** |
+----[SHA256]-----+

Далее нужно скопировать ключ из .pub в authorized_keys, который находится на удаленной машине.

1
2
3
4
5
# На локальной машине
scp ~/.ssh/id_rsa.pub root@ip:/dir/to/.ssh      # Скопировать ключ на сервер через SCP

# На хосте
cat ~/.ssh/id_rsa_pub >> ~/.ssh/authorized_keys # Записать ключ в authorized_keys

Либо можете просто открыть .pub скопировать ключ, и вставить его в authorized_keys, через любой текстовый редактор, или просто через sftp.

Что получается?

Локальная машина:

1
2
3
ls .ssh
id_rsa
id_rsa.pub

Удаленная машина:

1
2
3
4
5
ls .ssh
authorized_keys

cat .ssh/authorized_keys
ssh-rsa # много много букв

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

Так же публичный ключ (.pub) можно использовать и на другой машине, для этого его так же нужно будет скопировать в authorized_keys.