2022-09-24 15:14:32 +03:00
|
|
|
|
---
|
|
|
|
|
title: "🔐 Авторизация SSH по ключам"
|
|
|
|
|
date: 2022-09-24T10:13:30+03:00
|
2023-02-06 23:15:20 +03:00
|
|
|
|
lastmod: 2023-02-06T11:11:00+03:00
|
2022-09-24 15:14:32 +03:00
|
|
|
|
draft: false
|
|
|
|
|
tags: [ssh, tips, privacy]
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Шаг первый - создание ключа на локальной машине
|
|
|
|
|
|
|
|
|
|
Для генерации ключа на локальной машине необходимо выполнить команду `ssh-keygen`:
|
|
|
|
|
|
2023-02-06 23:15:20 +03:00
|
|
|
|
Вызвав команду, пользователю будет предложено,
|
|
|
|
|
указать путь куда будет сохранён ключ.
|
|
|
|
|
|
2022-09-24 15:14:32 +03:00
|
|
|
|
```text
|
|
|
|
|
Generating public/private rsa key pair.
|
|
|
|
|
Enter file in which to save the key (/home/user/.ssh/id_rsa):
|
|
|
|
|
```
|
|
|
|
|
|
2023-02-06 23:15:20 +03:00
|
|
|
|
В моём случае я указал путь и имя ключа `kvm`:
|
2022-09-24 15:14:32 +03:00
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
/home/user/.ssh/kvm
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Далее необходимо дважды ввести пароль для ключа:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
Enter passphrase (empty for no passphrase):
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
После этого ключ будет создан,
|
|
|
|
|
а в директории `~/.ssh` появится два файла: `kvm` и `kvm.pub`.
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
The key's randomart image is:
|
|
|
|
|
+---[RSA 3072]----+
|
|
|
|
|
| .. |
|
|
|
|
|
+----[SHA256]-----+
|
|
|
|
|
```
|
|
|
|
|
|
2023-02-06 23:15:20 +03:00
|
|
|
|
- `kvm` — секретный ключ
|
|
|
|
|
- `kvm.pub` — публичный ключ
|
|
|
|
|
|
2022-09-24 15:14:32 +03:00
|
|
|
|
## Шаг второй - копирование публичного ключа на удалённую машину
|
|
|
|
|
|
|
|
|
|
Выполняем команду:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
ssh-copy-id -i ~/.ssh/kvm <username>@<remotehost>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
и вводим пароль от `username`:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
username@remotehost's password:
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Если всё сделано верно, программа вернёт следующий ответ:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
Number of key(s) added: 1
|
|
|
|
|
|
|
|
|
|
Now try logging into the machine, with: "ssh 'user_name@remote_host'"
|
|
|
|
|
and check to make sure that only the key(s) you wanted were added.
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Готово.
|
|
|
|
|
|
|
|
|
|
Можно ещё создать файл `~/.ssh/config`, чтобы задать алиасы, а также другие настройки.
|
|
|
|
|
Например можно указать имя пользователя и путь к ключу.
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
Host github.com
|
|
|
|
|
User iiiypuk
|
|
|
|
|
IdentityFile /home/user/.ssh/github
|
|
|
|
|
|
|
|
|
|
Host remote_host
|
|
|
|
|
User alex
|
|
|
|
|
HostName 0.0.0.0
|
|
|
|
|
IdentityFile /home/user/.ssh/kvm
|
|
|
|
|
ServerAliveInterval 59
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
А после уже можно будет подключаться просто указывая хост.
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
$ ssh remotehost
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Установка ключа вручную
|
|
|
|
|
|
|
|
|
|
Добавить ключа на удалённую машину можно ещё одним способом.
|
|
|
|
|
|
|
|
|
|
На удаленной машине необходимо добавить содержимое локального файла `kvm.pub`
|
|
|
|
|
в файл `~/.ssh/authorized_keys` на сервере.
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
echo public_key_string >> ~/.ssh/authorized_keys
|
|
|
|
|
```
|