- SSH Без Пароля, или Как Настроить SSH-доступ по Ключу в Linux
- Преимущества Входа в SSH Без Пароля
- SSH-доступ по Ключу в Ubuntu и CentOS:
- Копирование Открытого Ключа для Включения Беспарольного SSH
- Метод 1: С Помощью Команды ssh-copy-id
- Метод 2: Копирование Закрытого Ключа с Помощью SSH
- Метод 3: Копирование Открытого Ключа Вручную
- Проверка Входа в SSH Без Пароля
- Как Отключить SSH-доступ по Ключу
- Итоги
- Как настроить SSH вход без пароля
- Подготовка
- Шаг 1. Создайте пару ключей SSH
- Шаг 2. Загрузите открытый ключ на удаленный сервер
- Вариант 1. Загрузить открытый ключ с помощью команды ssh-copy-id
- Вариант 2: загрузить открытый ключ с помощью команды cat
- Шаг 3. Войдите на сервер без пароля
- Дополнительно: Устранение неполадок с разрешениями файлов удаленного сервера
- Итог
SSH Без Пароля, или Как Настроить SSH-доступ по Ключу в Linux
SSH, или Secure Shell — это сетевой протокол с открытым исходным кодом, который можно использовать для входа на серверы и удалённого выполнения команд, что отлично подходит для пользователей VPS.
Есть два способа включить SSH:
Аутентификация на основе открытого ключа также известна как вход в SSH без пароля, или беcпарольный доступ по SSH.
Преимущества Входа в SSH Без Пароля
Защищённое паролем подключение пользователи зачастую находят неудобным. Пароли сложно запоминать, к тому же, если вы работаете в среде, где вам часто приходится вводить пароль, вы просто тратите на это лишнее время.
Здесь можно выделить несколько преимуществ входа в SSH без пароля:
- Простой и не интерактивный вход в систему. Пользователям не нужно вводить пароль для каждого нового сеанса
- Более безопасный по сравнению с паролями, криптографическая защита (открытый/закрытый ключ шифрования)
- Более надёжный
- Лучшее управление аутентификацией и авторизацией
- Подходит, как для маленькой, так и для большой инфраструктуры
- Легко настроить и поддерживать
Чтобы начать использовать SSH без пароля, вам нужно сгенерировать открытый SSH-ключ. В этом руководстве мы сосредоточимся на SSH версии 2, последнем и более безопасном протоколе.
Подключитесь к вашему VPS-серверу по SSH и мы начнём!
Во-первых, нам нужно проверить, существует ли SSH-ключ для клиентского компьютера. Это предотвратит перезапись текущей конфигурации. Чтобы узнать, используйте следующую команду:
Если ключ уже существует, вы можете а). пропустить следующий шаг — генерацию SSH-ключа; б). отменить текущую настройку; в). создать резервную копию существующего ключа. Если ключ не существует, вы увидите следующий вывод:
ls: cannot access /users/appsadm/.ssh/id_*.pub: No such file or directory
Далее мы можем приступить непосредственно к генерации SSH-ключа.
SSH-доступ по Ключу в Ubuntu и CentOS:
Чтобы сгенерировать открытый и закрытый SSH-ключ в Ubuntu или CentOS, используйте команду:
Параметр -t означает тип, а RSA — протокол, используемый для генерации ключей. RSA является типом по умолчанию, поэтому вы также можете использовать упрощённую версию команды — ssh-keygen.
Длина ключа по умолчанию — 2048 бит. Однако, если вы хотите усилить защиту, измените значение на 4096 бит. В этом случае команда будет выглядеть так:
Это интерактивный процесс генерации ключей, и вас попросят выполнить несколько действий, таких как:
- Enter file in which to save the key (/home/.ssh.id_rsa), или «Ввести файл для сохранения ключа (/home/.ssh.id_rsa)»
- Enter passphrase (empty for no passphrase), или «Ввести кодовую фразу (оставьте пустым для отключения кодовой фразы)»
Если вы хотите, чтобы были заданы значения по умолчанию, просто нажмите Enter в ответ на каждый из этих запросов. Кодовая фраза используется для шифрования закрытого ключа; однако она не является обязательной и может быть пропущена. Закрытый ключ будет сохранён в папке по умолчанию — .ssh/id_rsa.
Открытый ключ будет сохранён в файле .ssh/id_rsa.pub. На этом генерация ключа будет завершена. Вы можете проверить файлы с помощью любого редактора.
Копирование Открытого Ключа для Включения Беспарольного SSH
Скопировать открытый ключ на машину предназначения можно тремя способами:
Первый вариант является наиболее оптимальным и быстрым. Команда ssh-copy-id по умолчанию включена в большинство дистрибутивов Linux. Однако, если вы столкнулись с проблемами при использовании ssh-copy-id или не имеете доступа к этой команде, вы можете попробовать следующие опции.
Метод 1: С Помощью Команды ssh-copy-id
Основной синтаксис этой команды:
ssh-copy-id имя_удаленного_пользователя@удаленный_IP_aдрес
На этом этапе вам нужно будет ввести пароль удалённого компьютера. Если аутентификация пройдёт успешно, сгенерированный открытый ключ SSH будет добавлен в файл author_keys удалённого компьютера. После добавления записи соединение закроется автоматически.
Метод 2: Копирование Закрытого Ключа с Помощью SSH
При этом методе, мы копируем закрытый ключ, используя SSH. Этот вариант сработает только в том случае, если у вас есть SSH-доступ к серверу на основе пароля. Команда ниже сделает всю работу. Вам нужно только ввести имя и IP-адрес удалённого пользователя.
cat ~/.ssh/id_rsa.pub | ssh имя_удаленного_пользователя@удаленный_ip_aдрес "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Запись будет добавлена в файл author_keys удалённой машины.
Метод 3: Копирование Открытого Ключа Вручную
Третий метод немного сложнее, так как вам придётся всё делать вручную. Однако, вариант вполне рабочий и вы можете использовать его в отдельных случаях, когда другие методы не работаю. Вам нужно будет вручную добавить содержимое файла id_rsa.pub в файл ~/.ssh/authorized_keys удалённого сервера.
Вы можете посмотреть содержимое файла id_rsa.pub с помощью редактора vi или команды cat:
Команда выведет ключ, он начинается с ssh-rsa. Скопируйте эго! Затем на удалённом сервере войдите в систему и создайте файл .ssh, если он не существует.
Также само вы можете создать файл author_keys. Добавьте скопированный открытый SSH-ключ в пустой файл, как показано ниже:
echo SSH_public_key >> ~/.ssh/authorized_keys
SSH_public_key — это открытый ключ, который вы скопировали с исходного компьютера. Он должен начинаться с ssh-rsa.
После того как ключ будет скопирован, вы сможете настроить необходимые разрешения для каталога .ssh удалённых серверов с помощью команды chmod.
Проверка Входа в SSH Без Пароля
К этому моменту SSH-доступ по ключу должен быть успешно активирован и настроен. Чтобы протестировать эту функцию, можно попробовать подключится к удалённому серверу через исходный сервер. Синтаксис команды будет выглядеть так:
ssh имя_удаленного_пользователя@удаленный_IP_aдрес
Если всё прошло успешно, вы войдёте в систему автоматически без ввода пароля.
Как Отключить SSH-доступ по Ключу
Если вы решите, что беспарольный SSH вам не подходит, вы можете отключить эту функцию, выполнив следующие действия. Для этого откройте файл конфигурации SSH — /etc/ssh/ssh_config. Подойдёт любой текстовый редактор, мы используем nano. Здесь вы найдёте запись с PasswordAuthentication. Измените строки, как показано ниже:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
Чтобы изменения вступили в силу, сохраните файл и перезапустите SSH. Вот как это сделать в Ubuntu 18.04:
sudo systemctl restart ssh
Команда для CentOS 7:
sudo systemctl restart sshd
Итоги
На этом мы завершаем наше руководство о том, как настроить вход в SSH без пароля, а также отключить SSH-доступ по ключу, если вы решите, что вам не подходит эта функция. Надеемся, что эта инструкция была полезной! Успехов, берегите себя и свои данные!
Ольга вже близько восьми років працює менеджером у сфері IT, три з яких вона займається SEO. Написання технічних завдань та інструкцій — один з її основних обов’язків. Її хобі — дізнаватися щось нове і створювати цікаві та корисні статті про сучасні технології, веброзробку, мови програмування, пошукову оптимізацію сайтів та багато іншого.
Как настроить SSH вход без пароля
SSH (Secure Shell) обеспечивает безопасное удаленное соединение между двумя системами. С помощью этого криптографического протокола вы можете управлять машинами, копировать или перемещать файлы на удаленном сервере через зашифрованные каналы.
Существует два способа входа в удаленную систему через SSH — с использованием аутентификации по паролю или аутентификации с открытым ключом (вход SSH без пароля).
В этом руководстве вы узнаете, как настроить и включить вход по SSH без пароля.
Подготовка
- Доступ к командной строке или окну терминала
- Пользователь с привилегиями sudo или root
- Локальный сервер и удаленный сервер
- Доступ по SSH к удаленному серверу через командную строку или окно терминала
Перед тем как начать проверьте существующие ключи SSH. Возможно, на вашем компьютере уже есть пара ключей SSH. Чтобы узнать, есть ли у вас в системе ключи SSH, выполните команду:
Если в выводе указано, что таких файлов нет, переходите к следующему шагу, который показывает, как сгенерировать ключи SSH. Если они у вас есть, вы можете использовать существующие ключи, сделать их резервную копию и создать новую пару или перезаписать ее.
Шаг 1. Создайте пару ключей SSH
1. Первое, что вам нужно сделать, это сгенерировать пару ключей SSH на машине, на которой вы сейчас работаете.
В этом примере мы генерируем 4096-битную пару ключей. Мы также добавляем адрес электронной почты, но это необязательно. Команда такая:
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
2. Затем введите место, где вы хотите сохранить ключи, или нажмите Enter, чтобы принять путь по умолчанию.
3. Также вам будет предложено установить кодовую фразу. Хотя это делает соединение еще более безопасным, оно может прерываться при настройке автоматизированных процессов. Поэтому вы можете ввести пароль или просто нажать Enter, чтобы пропустить этот шаг.
4. Затем в выводе сообщается, где хранятся идентификационный и открытый ключ, а также выдается отпечаток ключа.
5. Убедитесь, что вы успешно создали пару ключей SSH, выполнив команду:
Вы должны увидеть путь идентификационного ключа и открытого ключа, как на скриншоте ниже:
Шаг 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 без пароля. Инструкции в этой статье должны помочь вам в этом.