SSH (Secure Shell) обеспечивает безопасное удаленное соединение между двумя системами. С помощью этого криптографического протокола вы можете управлять машинами, копировать или перемещать файлы на удаленном сервере через зашифрованные каналы.
Существует два способа входа в удаленную систему через SSH - с использованием аутентификации по паролю или аутентификации с открытым ключом (вход SSH без пароля).
В этом руководстве вы узнаете, как настроить и включить вход по SSH без пароля.
Подготовка
Нам необходимо:
- Доступ к командной строке или окну терминала
- Пользователь с привилегиями sudo или root
- Локальный сервер и удаленный сервер
- Доступ по SSH к удаленному серверу через командную строку или окно терминала
Перед тем как начать проверьте существующие ключи SSH. Возможно, на вашем компьютере уже есть пара ключей SSH. Чтобы узнать, есть ли у вас в системе ключи SSH, выполните команду:
ls -al ~/.ssh/id_*.pub
Если в выводе указано, что таких файлов нет, переходите к следующему шагу, который показывает, как сгенерировать ключи SSH. Если они у вас есть, вы можете использовать существующие ключи, сделать их резервную копию и создать новую пару или перезаписать ее.
Шаг 1. Создайте пару ключей SSH
1. Первое, что вам нужно сделать, это сгенерировать пару ключей SSH на машине, на которой вы сейчас работаете.
В этом примере мы генерируем 4096-битную пару ключей. Мы также добавляем адрес электронной почты, но это необязательно. Команда такая:
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
2. Затем введите место, где вы хотите сохранить ключи, или нажмите Enter, чтобы принять путь по умолчанию.
3. Также вам будет предложено установить кодовую фразу. Хотя это делает соединение еще более безопасным, оно может прерываться при настройке автоматизированных процессов. Поэтому вы можете ввести пароль или просто нажать Enter, чтобы пропустить этот шаг.
4. Затем в выводе сообщается, где хранятся идентификационный и открытый ключ, а также выдается отпечаток ключа.
5. Убедитесь, что вы успешно создали пару ключей SSH, выполнив команду:
ls -al ~/.ssh/id_*.pub
Вы должны увидеть путь идентификационного ключа и открытого ключа, как на скриншоте ниже:
Шаг 2. Загрузите открытый ключ на удаленный сервер
Вы можете загрузить публичный SSH-ключ на удаленный сервер с помощью команды ssh-copy-id
или команды cat
.
Вариант 1. Загрузить открытый ключ с помощью команды ssh-copy-id
Чтобы включить беспарольный доступ, вам необходимо загрузить копию открытого ключа на удаленный сервер.
1. Подключитесь к удаленному серверу и используйте команду ssh-copy-id
:
ssh-copy-ide [remote_username]@[server_ip_address]
2. Открытый ключ автоматически копируется в файл .ssh/authorized_keys
.
Вариант 2: загрузить открытый ключ с помощью команды cat
Другой способ скопировать открытый ключ на сервер - использовать команду cat
.
1. Начните с подключения к серверу и создания на нем каталога .ssh
.
ssh [remote_username]@[server_ip_address] mkdir -p .ssh
2. Затем введите пароль для удаленного пользователя.
3. Теперь вы можете загрузить открытый ключ с локальной машины на удаленный сервер. Команда также указывает, что ключ будет храниться под именем authorized_keys
во вновь созданном каталоге .ssh
:
cat .ssh/id_rsa.pub | ssh [remote_username]@[server_ip_address] 'cat >> .ssh/authorized_keys'
Шаг 3. Войдите на сервер без пароля
После создания пары ключей SSH и загрузки открытого ключа на удаленный сервер вы должны иметь возможность подключаться к выделенному серверу без ввода пароля.
Проверьте, работает ли установка, выполнив команду:
ssh [remote_username]@[server_ip_address]
Система должна напрямую входить в систему на удаленном сервере, пароль не требуется.
Примечание: убедившись, что вы можете подключаться к удаленному серверу SSH без пароля, рассмотрите возможность полного отключения аутентификации по паролю SSH. Это добавит еще один уровень безопасности и защитит ваш сервер от bruteforce атак.
Дополнительно: Устранение неполадок с разрешениями файлов удаленного сервера
Права доступа к файлам на удаленном сервере могут вызвать проблемы с входом в SSH без пароля. Это обычная проблема со старыми версиями SSH.
Если после выполнения всех шагов вам все еще предлагается ввести пароль, начните с редактирования прав доступа к файлам на удаленном сервере.
- Установите разрешения 700 для каталога
.ssh
. - Установите разрешения 640 для каталога
.ssh/authorized_keys
.
Отредактируйте права доступа к файлу с помощью следующей команды:
ssh [remote_username]@[server_ip_address] "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
При появлении запроса введите свой пароль. Если действие было успешным, вывода не будет.
Итог
Если вы хотите автоматизировать обновления и другие задачи или беспрепятственно подключаться к удаленному серверу по SSH, вам следует включить вход по SSH без пароля. Инструкции в этой статье должны помочь вам в этом.