🔐 Авторизация 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