Менеджер паролей pass
- Менеджер паролей
pass
— программа, сделанная в рамках идеологии Unix. - Также носит название стандартного менеджера паролей для Unix (The standard Unix password manager).
Содержание
1 Основные свойства
- Данные хранятся в файловой системе в виде каталогов и файлов.
- Файлы шифруются с помощью GPG-ключа.
2 Структура базы паролей
- Структура базы может быть произвольной, если Вы собираетесь использовать её напрямую, без промежуточного программного обеспечения. Тогда семантику структуры базы данных Вы держите в своей голове.
- Если же необходимо использовать дополнительное программное обеспечение, необходимо семантику заложить в структуру базы паролей.
2.1 Семантическая структура базы паролей
- Рассмотрим пользователя
user
в доменеexample.com
, порт22
. - Отсутствие имени пользователя или порта в имени файла означает, что любое имя пользователя и порт будут совпадать:
example.com.pgp
- Соответствующее имя пользователя может быть именем файла внутри каталога, имя которого совпадает с хостом. Это полезно, если в базе есть пароли для нескольких пользователей на одном хосте:
example.com/user.pgp
- Имя пользователя также может быть записано в виде префикса, отделенного от хоста знаком
@
:user@example.com.pgp
- Соответствующий порт может быть указан после хоста, отделённый двоеточием (
:
):example.com:22.pgp example.com:22/user.pgp user@example.com:22.pgp
- Эти все записи могут быть расположены в произвольных каталогах, задающих Вашу собственную иерархию.
3 Реализации
3.1 Утилиты командной строки
- На данный момент существует 2 основных реализации:
pass
— классическая реализация в виде shell-скриптов (https://www.passwordstore.org/);gopass
— реализация на go с дополнительными интегрированными функциями (https://www.gopass.pw/).
- Дальше в тексте будет использоваться программа
pass
, но всё то же самое можно сделать с помощью программыgopass
.
3.2 Графические интерфейсы
3.2.1 qtpass
qtpass
— может работать как графический интерфейс кpass
, так и как самостоятельная программа. В настройках можно переключаться между использованиемpass
иgnupg
.
3.2.2 gopass-ui
gopass-ui
— интерфейс кgopass
.
3.2.3 webpass
- Репозиторий: https://github.com/emersion/webpass
- Веб-интерфейс к pass.
- Написано на golang.
3.3 Приложения для Android
3.3.1 Password Store
- URL: https://play.google.com/store/apps/details?id=dev.msfjarvis.aps
- Репозиторий с кодом: https://github.com/android-password-store/Android-Password-Store
- Документация: https://android-password-store.github.io/docs/
- Для синхронизации с git необходимо импортировать ssh-ключи.
- Поддерживает разблокировку по биометрическим данным.
- Для работы требует наличия OpenKeychain: Easy PGP.
3.3.2 OpenKeychain: Easy PGP
- URL: https://play.google.com/store/apps/details?id=org.sufficientlysecure.keychain
- Операции с ключами pgp.
- Необходимо будет импортировать pgp-ключи.
- Не поддерживает разблокировку по биометрическим данным. Необходимо набирать пароль ключа.
3.4 Пакеты для Emacs
3.4.1 pass
- Основной режим для управления хранилищем и редактирования записей.
- Emacs. Пакет pass
- Репозиторий: https://github.com/NicolasPetton/pass
- Позволяет редактировать базу данных паролей.
- Запуск:
M-x pass
3.4.2 helm-pass
- Интерфейс helm для pass.
- Репозиторий: https://github.com/emacs-helm/helm-pass
- Запуск:
M-x helm-pass
- Выдаёт в минибуфере список записей из базы паролей. При нажатии
Enter
копирует пароль в буфер.
3.4.3 ivy-pass
- Интерфейс ivy для pass.
- Репозиторий: https://github.com/ecraven/ivy-pass
4 Установка
Linux
- Gentoo
pass
emerge app-admin/pass
gopass
emerge app-admin/gopass
qtpass
emerge app-admin/qtpass
- Gopass UI
- Находится в оверлее awesome (https://gitlab.awesome-it.de/overlays/awesome/).
- Установка:
emerge app-admin/gopass-ui
- Fedora
pass
dnf install pass pass-otp
gopass
dnf install gopass
- Gentoo
Macintosh
brew install pass
Windows
pass
choco install pass4win
gopass
choco install gopass
5 Настройка
5.1 Ключи GPG
- Просмотр списка ключей:
gpg --list-secret-keys
- Если ключа нет, нужно создать новый:
gpg --full-generate-key
5.2 Инициализация хранилища
5.2.1 pass
- Инициализируем хранилище:
pass init <gpg-id or email>
5.2.2 gopass
Для
gopass
можно просто ввести:gopass init
- Программа запросит ключ и почту для git.
- Будет инициализирована сразу структура git в каталоге
~/.password-store
.
5.2.3 qtpass
- Также можно инициализировать с помощью графического инструмента
qtpass
:qtpass
5.3 Синхронизация с git
5.3.1 gopass
- При инициализации
gopass
инициализирует также структуру git. - При необходимости это можно сделать отдельно:
gopass git init
- Также можно задать адрес репозитория на хостинге (репозиторий необходимо предварительно создать):
gopass git remote add origin git@github.com:<git_username>/<git_repo>.git
- Для синхронизации выполняется следующая команда:
gopass sync
5.3.2 Прямые изменения
- Следует заметить, что отслеживаются только изменения, сделанные через сам
gopass
(илиpass
). - Если изменения сделаны непосредственно на файловой системе, необходимо вручную закоммитить и выложить изменения:
cd ~/.password-store/ git add . git commit -am 'edit manually' git push
- Проверить статус синхронизации модно командой
gopass git status
5.4 Тонкие настройки
- По умолчанию каталог с паролями называется
~/.password-store
. Но его можно задать также с помощью переменной окруженияPASSWORD_STORE_DIR
.
5.5 Устранение сбоев
5.5.1 Невозможно расшифровать пароль
Команда
gopass show secret
выдаётError: Failed to decrypt
.Можно установить в
~/.bashrc
или~/.profile
:export GPG_TTY=$(tty)
6 Работа с паролями
6.1 Создание нового пароля
6.2 Ручная правка базы паролей
- Базу паролей можно редактировать и без использования специальных утилит.
- Можно использовать для исправления структуры каталогов и имён файлов.
- Синхронизацию с git придётся выполнять вручную.
- Не следует использовать символьные ссылки. Они не переносимы между разными операционными системами и могут нарушиться при синхронизации (например, с Android).
- После ручного редактирования рекомендуется проверить структуру базы паролей:
gopass fsck
7 Миграция баз паролей из других программ
7.1 Скрипты для миграции
7.1.1 pass-import
- https://github.com/roddhjav/pass-import
- Расширение для
pass
. - Можно использовать для разных менеджеров паролей:
Целевой менеджер паролей Формат csv csv gopass gopass keepass kdbx keepassx2 kdbx keepassxc kdbx pass pass
Установка
- Gentoo
- Находится в оверлее
wjn-overlay
(https://data.gpo.zugaina.org/wjn-overlay/). - Установка:
emerge app-admin/pass-import
- Находится в оверлее
- Gentoo
Использование
- Для
pass
:- Автоопределение формата источника:
pass import path/to/passwords
- Если автоопределение не сработало:
pass import <password_manager> path/to/passwords
- Если конвертация не для
pass
:pimport <new_pm> <former_pm> path/to/passwords --out path/to/destination/pm
- Автоопределение формата источника:
- Для
7.1.2 Отдельные скрипты
- На странице https://www.passwordstore.org/ приведён список отдельных скриптов для миграции из разных служб.
- Используйте в целях эксперимента.
7.2 Конкретные рецепты
7.2.1 LastPass
- В меню выберите Account options > Advanced > Export > LastPass CVS File.
- Сохраняем результат в файл
lastpass_export.csv
. - Конвертация с помощью
pass-import
:pass import lastpass lastpass_export.csv
- Альтернативный вариант. Не используйте его. Результат не соответствует структуре именования
pass
.- Скачайте скрипт:
wget https://git.zx2c4.com/password-store/plain/contrib/importers/lastpass2pass.rb
- Сделайте скрипт исполняемым:
chmod +x lastpass2pass.rb
- Импортируйте пароли:
./lastpass2pass.rb lastpass_export.csv
- Скачайте скрипт:
7.3 Экспорт паролей
7.3.1 pass2csv
- Репозиторий: https://github.com/reinefjord/pass2csv
- Сайт: https://pypi.org/project/pass2csv/
- Экспортирует хранилище паролей pass в csv.
- Поддерживает задание шаблонов экспорта.
8 Дополнительные возможности
8.1 Проверка утечки пароля
- Проверка утечки пароля производится с помощью сервиса https://haveibeenpwned.com/ (см. Have I Been Pwned (HIBP)).
8.1.1 pass
- Проверка производится с помощью плагина
pass-audit
. - Код: https://github.com/roddhjav/pass-audit.
- Установка:
- Gentoo:
Находится в репозитории https://github.com/yamadharma/gentoo-portage-local.
emerge app-admin/pass-audit
- Gentoo:
Находится в репозитории https://github.com/yamadharma/gentoo-portage-local.
- Использование:
- Проверка по парольному каталогу или по парольной записи:
pass audit [каталог или одна запись]
- Без параметра проверяет всю базу паролей.
- Проверка по парольному каталогу или по парольной записи:
8.1.2 gopass
Простая проверка качества пароля
- Простая проверка качества пароля по парольному каталогу или по парольной записи:
gopass audit [каталог или одна запись]
- Без параметра проверяет всю базу паролей.
- Простая проверка качества пароля по парольному каталогу или по парольной записи:
Проверка утечки пароля
- Начиная с версии gopass-1.12.0 команда создания интерфейса взаимодействия с HIPB выделена в отдельную утилиту.
- Проверка производится с помощью плагина
gopass-hibp
. - Код: https://github.com/gopasspw/gopass-hibp.
- Установка:
- Gentoo:
emerge app-admin/gopass-hibp
- Gentoo:
- Использование:
- Использование HIBPv2 API
gopass-hibp api
- Сравнение хешей паролей с дампом HIBP:
- Скачиваем дамп SHA-1 хешей паролей с https://haveibeenpwned.com/Passwords и распаковываем его.
- Проверяем пароли:Этот вариант помедленнее.
gopass-hibp dump pwned-passwords-1.0.txt
- Использование HIBPv2 API
- Проверяет сразу все записи в базе паролей. Один пароль проверить нельзя.
8.2 Одноразовые пароли
9 Интеграция с другими программами
Links to this note
- Запросы по протоколу imap из командной строки
- Emacs. Пакет pass
- Почта. Yahoo.com. Настройка почтового клиента
- rofi-pass
- Менеджер паролей pass. Интеграция с другими программами
- Почта. Yandex. Пароли приложений
- Почта. Google. Настройка почтового клиента
- Менеджеры паролей
- Личные базы данных
- Emacs. Почта. Парольная аутентификация
- Почта. Синхронизация. mbsync
- Почта. Подключение к Google
- Firefox. Расширения