Используйте PGP Keypair для входа - PullRequest
0 голосов
/ 27 марта 2020

Я создал главный ключ PGP и подраздел аутентификации на моем сервере Ubuntu. Для пользователя testUserX, который мне еще предстоит создать, я хочу, чтобы он (testUserX) использовал подраздел аутентификации для входа на этот сервер.

sec  rsa1024/1CA56EBE6E0D128A
     created: 2020-03-27  expires: never       usage: C
     trust: ultimate      validity: ultimate
ssb  rsa1024/7D9558836D7E9E72
     created: 2020-03-27  expires: never       usage: A
[ultimate] (1). admin <admin-test@example.com>

Я пытался следовать нескольким учебникам, которые я нашел в inte rnet, но ни один из них пока не работал. У меня есть сервер Ubuntu 18.04, и моя версия gpg (GnuPG) - 2.2.4.

Кто-нибудь может мне помочь, как это сделать? Это должно быть довольно просто, но я не смог справиться с этим. Спасибо.

Редактировать: Может быть, я должен уточнить свой ответ, что я сделал до сих пор.

На сервере Ubuntu я экспортировал ключ publi c подраздела аутентификации в ~/.ssh/authorized_keys

gpg --export-ssh-key 7D9558836D7E9E72! > 7D9558836D7E9E72.pub.ssh
cat ~/7D9558836D7E9E72.pub.ssh >> ~/.ssh/authorized_keys

Затем я экспортировал закрытый ключ на мой Windows 10 компьютер и импортировал его туда:

scp ferit@192.168.2.8:~/7D9558836D7E9E72.sub.key C:\Users\ferit\Downloads\
gpg --import 7D9558836D7E9E72.sub.key

Итак, вопрос: Как мне войти с Windows 10 в Сервер Ubuntu через PGP?

1 Ответ

0 голосов
/ 28 марта 2020

Я не уверен, что подход правильный, но, возможно, я что-то неправильно понял.

Идея заключается в следующем:

  • каждый пользователь в вашей системе сможет загрузить свои publi c key на вашем сервере
  • , когда это будет сделано, вы можете импортировать ключ в набор ключей
  • , а затем, когда они захотят войти, им сначала нужно введите их имя пользователя
  • , затем сервер извлечет соответствующий идентификатор ключа в базе данных
  • , затем вы создадите случайный запрос, который зашифрован PGP с использованием ключа publi c пользователь (и, возможно, ваш), так что только пользователь (и, возможно, вы) может расшифровать сообщение
  • , пользователь вводит ответ на запрос
  • , если ответ соответствует сгенерированное значение, он / она будет успешно авторизован.

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

Каждый хранит свои секретные ключи в секрете, но открытый ключ c может быть (должно быть) свободно распространяемым.

Это тип 2FA, поэтому я уверен, что вы легко найдете примеры кода для этой задачи. Но вы не указали язык, который будете использовать. Кроме того, вы не совсем точно говорите цель. «Войти» расплывчато. Является ли целью войти на веб-сайт или в какой-либо сервис, такой как S SH? Реализация будет варьироваться в зависимости от цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...