Назад | Перейти на главную страницу

Вход с одноразовым паролем через ssh

Добавление ключей SSH

У меня есть сервер под управлением CentOS 7. У меня есть множество клиентов, от Fedora, Ubuntu, CentOS и Windows 10, если это важно. Единственный способ войти на сервер - через ssh на терминале с ключом ssh. Пароль не включен

Что я хочу сделать, так это иметь возможность как суперпользователь разрешить одноразовый вход через пароль с целью добавления ключей ssh с разных машин, чтобы упростить задачу.

Когда клиент вошел в систему, нельзя будет снова использовать пароль для входа в систему, пока это не будет разрешено.

Это содержание моего /etc/ssh/sshd_config файл с соответствующей информацией

UsePAM yes
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no

Есть какой-либо способ сделать это?

заранее спасибо

Единственный раз, когда вам нужно войти в систему с использованием пароля в данном сценарии, - это при начальной загрузке возможности входа на основе ключа для первой учетной записи пользователя на новом хосте.

Поскольку сервер использует только пользовательский общественный ключ для их аутентификации, для вас в роли системного администратора должно быть безопасно просто попросить у них этот ключ и добавить его в их ~/.ssh/authorized_keys при создании своей учетной записи. В этом случае не имеет значения, делаете ли вы это вручную, с помощью сценария оболочки или инструмента оркестрации, такого как Ansible.
Естественно, их закрытый ключ никогда не должен покидать компьютер.

Я хочу начать с того, что отвечаю на этот вопрос академически. Я не могу утверждать, что это хорошая идея.

Начните с добавления группы пользователей в систему; напр. keys-only.

Затем в вашем sshd_config устанавливать PasswordAuthentication no только для членов этой группы.

Match Group keys-only
    PasswordAuthentication no

Да, все остальные пользователи смогут использовать пароли. Так как...

Когда пользователь SSH входит в первый раз, его следует добавить в keys-only group таким образом, чтобы последующие входы в систему подпадали под действие правила соответствия выше. Вы можете сделать это с помощью скрипта в /etc/profile.d и соответствующая политика sudo.

# Add users to the keys-only group if they are not already members.
if ! lid -gn keys-only >/dev/null | grep -q $USER; then
  sudo usermod -aG keys-only $USER
fi

На самом деле это только приблизительный шаг, чтобы заставить вас задуматься, и не претендующий на полноту. Вам нужно будет продумать сценарии, например, когда пользователь не успешно добавлен в keys-only группа. (Последующие входы по паролю все еще разрешены.)