- Что такое беспарольный SSH
- Почему стоит использовать беспарольный вход SSH
- Удобный и безопасный вход в систему
- Автоматизация задач резервного копирования
- Монтирование удаленной файловой системы
- Настройка беспарольного входа SSH в Linux
- Убедитесь, что установлены SSH-сервер и клиен.
- Создание асимметричных ключей.
- Копирование открытого ключа SSH на удаленный сервер.
- Проверка беспарольного доступа по SSH
- Отключение беспарольного входа в систему SSH в Linux
- Заключение
Хороший администратор сервера использует несколько надежных паролей, которые трудно запомнить, однако вводить каждый из них при обращении к удаленным серверам сложно и неудобно. Чтобы решить эту проблему, можно использовать беспарольный SSH. Давайте разберемся, как его настроить в Linux.
Еще по теме: Получение уведомления на почту о входе по SSH
Что такое беспарольный SSH
Беспарольный SSH позволяет экспортировать открытый ключ SSH клиента на удаленный сервер, чтобы клиент мог входить в систему без ввода пароля. Для этого используется асимметричная пара ключей.
Процедура аутентификации работает следующим образом:
Когда клиент пытается получить доступ к SSH-серверу, сервер сначала проверяет, авторизован ли открытый ключ клиента. Если он авторизован, то процесс аутентификации продолжается. Если же он не авторизован, то процесс завершается, и доступ к серверу невозможен.
Если сервер авторизует открытый ключ клиента, то он шифрует сообщение с помощью открытого ключа клиента. После того как сервер зашифровал сообщение, он отправляет его клиенту.
Клиент получает сообщение от сервера. После получения сообщения клиент пытается расшифровать его с помощью закрытого ключа. Если клиент расшифрует сообщение с помощью закрытого ключа, сервер обнаружит это, и соединение с SSH-сервером будет установлено.
Если клиент не может расшифровать сообщение, отправленное сервером, то процесс соединения с сервером прерывается.
Почему стоит использовать беспарольный вход SSH
Беспарольный SSH обладает рядом преимуществ по сравнению с традиционными методами входа в систему, основанными на паролях. Вот некоторые из наиболее важных преимуществ, которые делают использование SSH без пароля целесообразным:
Удобный и безопасный вход в систему
Тот факт, что для подключения к SSH-серверу не нужно запоминать и вводить пароли, делает процесс аутентификации удобным. Кроме того, она основана на криптографии с открытым и закрытым ключом, что исключает риск кражи паролей в результате атак типа «человек посередине» и других фишинговых атак.
Автоматизация задач резервного копирования
Используя Rsync и другие утилиты, можно автоматизировать задачу еженедельного резервного копирования содержимого, создаваемого в офисе в США, и сохранения его в офисе, расположенном в Китае. Процесс будет зашифрован по протоколу SSH и полностью автоматизирован, поскольку вам не придется вводить пароль.
Монтирование удаленной файловой системы
SSH без пароля полезен, если необходимо смонтировать удаленную файловую систему с помощью SSHFS. Получив доступ к SSHFS-серверу без пароля, мы можем заставить SSHFS-сервер монтировать себя при запуске клиента.
Кроме того, многие git-серверы используют аутентификацию по открытым ключам SSH. Поэтому пара асимметричных ключей, созданная для подключения к SSH-серверу, может использоваться и в других целях, например, для аутентификации при подключении к Git-серверу.
Настройка беспарольного входа SSH в Linux
Чтобы настроить беспарольный вход SSH в Linux, выполните следующие шаги.
Убедитесь, что установлены SSH-сервер и клиен.
Прежде всего необходимо убедиться, что на системе, которая будет выступать в качестве сервера, установлен SSH-сервер. Для этого нужно открыть терминал и ввести следующую команду:
1 |
sudo apt-get install openssh-server |
Если в вашей операционной системе не будет установлен новый пакет, то на компьютере, который будет выступать в роли сервера, уже установлен и работает SSH-сервер. Аналогичным образом убедитесь, что на системе, которая будет выступать в роли клиента, установлены пакеты, необходимые для подключения к SSH-серверу. Для этого откройте терминал и введите следующую команду:
1 |
sudo apt-get install openssh-client |
В настоящее время в большинстве дистрибутивов Linux по умолчанию установлены SSH-клиент и сервер.
Создание асимметричных ключей.
Убедившись, что SSH-сервер и клиент имеют необходимые пакеты, можно сгенерировать асимметричные ключи для доступа к SSH-серверу без ввода пароля.
Для этого на компьютере, который будет выступать в роли клиента, необходимо открыть терминал и ввести следующую команду:
1 |
ssh-keygen -b 4096 -t rsa |
Где:
- ssh-keygen — это команда, которая генерирует пару ключей.
- -b 4096 — вы указываете, что генерируемый асимметричный ключ имеет размер 4096 бит (можно выбрать 1024 или 2048).
- -t rsa — указывает, что алгоритм, используемый для генерации пары ключей, должен быть RSA. (можно использовать другие алгоритмы: DSA, ECDSA, RSA1 и ED25519).
Сразу после выполнения команды появится запрос на указание места хранения ключей и имени, которое вы хотите им присвоить. Просто нажмите клавишу Enter. Таким образом, ключи будут сохранены в стандартном месте, т.е. /home/ user /.ssh/, и будут иметь стандартное имя id_rsa.
Далее будет предложено ввести пароль для шифрования закрытого ключа. Поскольку мы хотим подключиться к серверу без ввода пароля, нажмите клавишу Enter, не вводя пароль.
В заключение предлагается повторно ввести пароль. Поскольку мы не вводили никакого пароля, нажмите клавишу Enter еще раз.
После выполнения этих действий асимметричные ключи будут созданы в каталоге ~/.ssh.
Копирование открытого ключа SSH на удаленный сервер.
Для организации беспарольного доступа по SSH существует два типа SSH-ключей: несекретный открытый ключ (public key) и секретный ключ (private key), id_rsa — это ваш закрытый ключ, а id_rsa.pub — открытый ключ.
Открытый ключ необходимо скопировать на удаленный сервер с помощью команды ssh-copy-id, либо вручную.
Типичный синтаксис команды копирования открытого ключа SSH выглядит следующим образом.
1 |
ssh-copy-id username@remote.host.name |
Следующий пример может быть более понятным:
1 |
ssh-copy-id root@192.168.1.6 |
Альтернативным вариантом является вход на удаленный сервер и создание текстового файла в каталоге ~/.ssh, например, путем выполнения следующей команды.
1 |
nano ~/.ssh/authorized_keys |
Скопируйте содержимое файла ~/.ssh/id_rsa.pub на локальной машине в этот файл, сохраните его и выйдите из текстового редактора.
Проверка беспарольного доступа по SSH
Чтобы проверить, работает ли беспарольный SSH, просто попробуйте получить доступ к SSH-серверу:
1 |
$ ssh remote_username@server_ip_address |
Если все прошло успешно, то вы сразу же войдете в систему без пароля.
Отключение беспарольного входа в систему SSH в Linux
Для отключения входа в систему без пароля откройте конфигурационный файл SSH с помощью текстового редактора. В большинстве дистрибутивов конфигурационный файл находится здесь:
1 |
/etc/ssh/sshd_config |
Найдите строку PermitEmptyPasswords yes и измените ее на PermitEmptyPasswords no.
Сохраните изменения в конфигурационном файле и выйдите из текстового редактора.
Перезапустите SSH:
1 |
sudo systemctl restart sshd |
Заключение
Пароли, какими бы сложными они ни были, менее безопасны, а при большом количестве серверов или частом входе в систему этот процесс становится неэффективным. Беспарольная ssh-аутентификация с использованием асимметричных ключей не только удобнее, но и надежнее, а также защищает от фишинговых атак.
ПОЛЕЗНЫЕ ССЫЛКИ:
- SSH-соединение с помощью Pysftp на Python
- Проверка безопасности SSH-сервера (ssh-audit / онлайн)
- Двухфакторная аутентификация в Linux для SSH и терминала