ssh auth with key

This commit is contained in:
Alexander Popov 2022-09-24 15:14:32 +03:00
parent fb86d10390
commit e4de575a61
Signed by: iiiypuk
GPG Key ID: D8C9B59A9F04A70C

View File

@ -0,0 +1,96 @@
---
title: "🔐 Авторизация SSH по ключам"
date: 2022-09-24T10:13:30+03:00
draft: false
tags: [ssh, tips, privacy]
---
## Шаг первый - создание ключа на локальной машине
Для генерации ключа на локальной машине необходимо выполнить команду `ssh-keygen`:
```text
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
```
В ответ прошрамме необходимо указать путь куда будет сохранён ключ.
В моём случае имя ключа будет `kvm`:
```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]-----+
```
## Шаг второй - копирование публичного ключа на удалённую машину
Выполняем команду:
```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
```