🔐 Авторизация SSH по ключам
Шаг первый - создание ключа на локальной машине
Для генерации ключа на локальной машине необходимо выполнить команду ssh-keygen
:
Вызвав команду, пользователю будет предложено, указать путь куда будет сохранён ключ.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
В моём случае я указал путь и имя ключа kvm
:
/home/user/.ssh/kvm
Далее необходимо дважды ввести пароль для ключа:
Enter passphrase (empty for no passphrase):
После этого ключ будет создан,
а в директории ~/.ssh
появится два файла: kvm
и kvm.pub
.
The key's randomart image is:
+---[RSA 3072]----+
| .. |
+----[SHA256]-----+
kvm
— секретный ключkvm.pub
— публичный ключ
Шаг второй - копирование публичного ключа на удалённую машину
Выполняем команду:
ssh-copy-id -i ~/.ssh/kvm <username>@<remotehost>
и вводим пароль от username
:
username@remotehost's password:
Если всё сделано верно, программа вернёт следующий ответ:
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
, чтобы задать алиасы, а также другие настройки.
Например можно указать имя пользователя и путь к ключу.
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
А после уже можно будет подключаться просто указывая хост.
$ ssh remotehost
Установка ключа вручную
Добавить ключа на удалённую машину можно ещё одним способом.
На удаленной машине необходимо добавить содержимое локального файла kvm.pub
в файл ~/.ssh/authorized_keys
на сервере.
echo public_key_string >> ~/.ssh/authorized_keys