Linux - статьи

Установление беспарольного SSH-соединения


Наш пользователь VPN на VPN-клиенте должен иметь возможность соединяться с VPN-сервером без пароля. Этого можно добиться с помощью SSH несколькими различными способами. Есть два стандартных метода – хостовая аутентификация и аутентификация по идентификатору SSH. Прочие методы, например, kerberos, обычно требуют значительных усилий по обслуживанию и их трудно использовать в ситуациях, подобных нашей.

Хостовая аутентификация использует установление доверительных взаимоотношений между хостами. В данном случае любой пользователь одного хоста (клиент) может без пароля соединиться с другим хостом (сервером). Если не слишком вдаваться в детали, то при этом копия публичного хостового SSH-ключа клиента устанавливается на сервер в /etc/ssh/ssh_known_hosts, а имя клиентской машины записывается в /etc/shosts.equiv. При соединении клиента с сервером, представляемый клиентом ключ сравнивается с ключом, хранящимся в файле. Если ключи совпадают, сервер заключает, что клиент имеет право доступа и соединение без пароля разрешается. Позже, при установлении соединения, мы увидим, как работают хостовые ключи SSH. Если вы желаете использовать хостовую аутентификацию в других проектах, обратитесь за информацией к руководству по sshd.

Проблема хостовой аутентификации состоит в том, что всем пользователям клиента позволяется без ограничений соединяться с учетными записями на сервере. В нашей ситуации нам нужно, чтобы соединение осуществлял один конкретный пользователь, при этом еще нужно накладывать ограничения на команды, которые пользователь может подавать и должен существовать запрет на интерактивные соединения. Таким образом, хостовая аутентификация слишком либеральна для наших целей.

Идентификатор (identity) SSH - это просто пара из публичного и приватного ключа, располагающаяся на машине – клиенте. С сервером может соединиться любой пользователь, обладающий верным идентификатором, и поместивший свой публичный ключ в файл $HOME/.ssh/authorized_keys на SSH-сервере. Обычно идентификаторы создаются таким образом, что для их использования нужна идентификационная фраза (passphrase, многословный вариант пароля).

Таким образом, модель, использующая идентификатор SSH, позволит пользователю VPN на машине-клиенте соединиться с сервером без пароля, и при этом никакие другие соединения с сервером дозволяться не будут. Позже мы увидим, что в идентификатор SSH можно ввести ограничения и другими выгодными способами.



Содержание раздела