Генерация временных паролей TOTP в терминале.
Для генерации временных паролей 2fa TOTP можно использовать скрипты в терминале.
Обновляем базу пакетов репозиотриев
sudo apt update
Устанавливаем необходимые пакеты.
sudo apt install oathtool gnupg2
Простейший метод генерации временных паролей.
oathtool -b --totp 'NNQWWYLJMF2G66DFOJXGSYIK'
Где NNQWWYLJMF2G66DFOJXGSYIK
― секретный ключ TOTP. Для того что бы он не остался в истории команд терминала начните ввод команды с пробела.
Безопаснее использовать хранение секретного ключа TOTP с шифрованием PGP. Создаём ключевую пару PGP.
Создаём каталог для хранения шифрованных секретных ключей TOTP.
mkdir ~/.totp/
Выводим список ключей PGP в связке.
gpg --list-secret-keys --keyid-format LONG
Создаём скрипт для шифрования секретных ключеё TOTP.
nano ~/encrypt.key.sh
Помещаем в файл текст скрипта.
#!/bin/bash
_gpg2="/usr/bin/gpg2"
uid="atos@pasaremos.net"
kid="8C9D7287BC1A1E2D908354D165D4821C7D154377"
dir="$HOME/.totp"
s="$1"
k="${dir}/${s}/.key"
kg="${k}.gpg"
[ "$1" == "" ] && { echo "Использование: $0 сервиса"; exit 1; }
[ ! -f "$k" ] && { echo "$0 - Ошибка: файл $k не найден."; exit 2; }
[ -f "$kg" ] && { echo "$0 - Ошибка: шифрованный файл \"$kg\" существует."; exit 3; }
$_gpg2 -u "${kid}" -r "${uid}" --encrypt "$k" && rm -i "$k"
Где:
uid ― идентификатор вашего секретного ключа.
kid ― id вашего секретного ключа из вывода gpg --list-secret-keys --keyid-format LONG
Выдаём скрипту права на выполнение.
chmod 700 ~/encrypt.key.sh
Создаём скрипт для расшифровки секретных ключеё TOTP и генерации временных паролей.
nano ~/decrypt.key.sh
#!/bin/bash
_gpg2="/usr/bin/gpg2"
_oathtool="/usr/bin/oathtool"
uid="atos@pasaremos.net"
kid="8C9D7287BC1A1E2D908354D165D4821C7D154377"
dir="$HOME/.totp"
s="$1"
k="${dir}/${s}/.key"
kg="${k}.gpg"
[ "$1" == "" ] && { echo "Использование: $0 сервиса"; exit 1; }
[ ! -f "$kg" ] && { echo "Ошибка: Зашифрованный файл \"$kg\" не найден."; exit 2; }
totp=$($_gpg2 --quiet -u "${kid}" -r "${uid}" --decrypt "$kg")
echo "Ваш код для $s это ..."
code=$($_oathtool -b --totp "$totp")
type -a xclip &>/dev/null
[ $? -eq 0 ] && { echo $code | xclip -sel clip; echo "*** Код скопирован в буфер обмена ***"; }
echo "$code"
[ -f "$k" ] && echo "Предупреждение - Найден не шифрованный ключевой файл \"$k\"."
Выдаём скрипту права на выполнение.
chmod 700 ~/decrypt.key.sh
Делаем текущим каталог для шифрованных секретных ключей TOTP.
cd ~/.totp/
Создаём каталог для сервиса.
mkdir atos@pasaremos.net
Создаём файл с секретным ключом TOTP сервиса. Для того что бы секретнй ключ TOTP не остался в истории команд терминала начните ввод команды с пробела.
echo -n 'NNQWWYLJMF2G66DFOJXGSYIK' > ~/.totp/atos@pasaremos.net/.key
Шифруем файл с секретным ключом TOTP сервиса.
~/encrypt.key.sh atos@pasaremos.net
Удаляем файл после шифрования.
rm: удалить обычный файл '/home/amnesia/.totp/atos@pasaremos.net/.key'? y
Для генерации временного пароля запускаем скрипт, вводим запрашиваемый пароль PGP ключа.
~/decrypt.key.sh atos@pasaremos.net
Временной пароль выводится в терминал и копируется в буфер обмена при наличии в системе графического интерфейса и пакета xclip.