Когда вы подключаетесь к серверу через SSH, обычно для авторизации используется логин и пароль. Уровень безопасности такого метода во многом зависит от сложности пароля: чем он сложнее, тем труднее его угадать. При каждом соединении с сервером вам потребуется вручную вводить этот пароль или копировать его откуда-то (например, из менеджера паролей).
Однако существует метод, который облегчает вход на сервер и одновременно повышает безопасность соединения. Это аутентификация посредством SSH-ключа. Вам не придётся каждый раз вводить пароль при подключении к серверу через SSH. Вместо этого процесс проверки подлинности будет осуществляться с использованием ключа, который хранится на вашем компьютере.
Всего для такой аутентификация используется два ключа:
- приватный ― этот ключ будет храниться на диске вашего компьютера. Его нельзя никому показывать и пересылать;
- публичный (открытый) ― его нужно будет поместить на сервер. Ниже создадим пару ключей на вашем компьютере, а затем поместим открытый ключ на сервер.
Как создать SSH-ключ
Linux / MacOS
- Откройте терминал.
- Запустите генератор SSH-ключей:
- Linux
ssh-keygen
- MacOS
ssh-keygen -t rsa
- Выберите директорию, в которой хотите сохранить файл. Если хотите оставить путь по умолчанию (
~/.ssh/id_rsa
), нажмите Enter. - Для дополнительной защиты можно указать кодовую фразу. Она будет периодически запрашиваться при подключении к серверу. Если не хотите задавать фразу, пропустите этот шаг клавишей Enter.
Готово, приватный и открытый ключи сгенерированы и сохранены.
Как добавить SSH-ключ на сервер
Linux / MacOS
- Откройте терминал.
- Скопируйте открытый ключ на сервер командой:
ssh-copy-id [email protected]
Где:
- root ― логин пользователя на сервере,
- 123.123.123.123 ― IP-адрес сервера.
- Введите пароль от сервера.
Полуручно добавление ключа
ssh [email protected] 'mkdir -pm 700 ~/.ssh; echo ' $(cat ~/.ssh/id_rsa.pub) ' >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'
Эта последовательность команд создаст специальную папку протокола на сервере (в случае, если отсутствует) с соответствующими разрешениями (700) на запись и чтение. Далее создастся файл authorized_keys — в нем хранятся публичные ключи всех разрешенных пользователей. Поэтому именно в него будет записана информация из локального файла (со стандартным названием) с открытым ключом клиента. Если authorized_keys уже есть на удаленном сервере, то он будет просто дополнен. По итогу эта команда дополнительно устанавливает соответствующее разрешение на файл authorized_keys внутри системы удаленного хоста.
Готово, вы добавили публичный ключ на сервер. Теперь при подключении с вашего компьютера пароль не будет запрашиваться.