--- title: "🔐 Авторизация SSH по ключам" date: 2022-09-24T10:13:30+03:00 lastmod: 2023-02-06T11:11:00+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]-----+ ``` - `kvm` — секретный ключ - `kvm.pub` — публичный ключ ## Шаг второй - копирование публичного ключа на удалённую машину Выполняем команду: ```sh ssh-copy-id -i ~/.ssh/kvm @ ``` и вводим пароль от `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 ```