[Перевод] Знакомьтесь, pass

mc0otrwbufajr_0qfmavhiewkl4.png

Я много лет искал подходящую мне хранилку паролей и недавно наткнулся на Pass на HackerNews. Идея хранить пароли в git-репозитории может выглядеть странно, но в целом это неплохая идея, потому что:

  • Я держу гит-репозиторий локально у себя на компе
  • Все пароли защищены GPG шифрованием, поэтому даже при получении SSH-доступа к моему компьютеру утечка не повлияет на безопасность

Я использую -c чтобы копировать/вставлять пароли. Есть расширение для браузера, но копипейст лично мне удобнее. Проблемы синхронизации с телефоном и всеми linux-дейвайсами тоже не стоит (потому что это всего лишь git).

Делюсь с вами переводом приветственной странички Pass.


Управление паролями должно быть простым и следовать философии Unix. Используя pass, каждый Ваш пароль находится внутри зашифрованного файла gpg, имя которого совпадает с именем ресурса или веб сайта к которому данный пароль привязан. Эти зашифрованные файлы могут быть организованы в удобные иерархии папок, скопированы с носителя на носитель и, в общем, обработаны с помощью любых утилит управления файлами командной строки.

С pass управлять отдельными файлами паролей становится крайне просто. Все пароли хранятся в ~ / .password-store, а pass предоставляет несколько удобных команд для добавления, редактирования, генерации и получения паролей. Это очень короткий и простой Shell скрипт. Он способен временно помещать пароли в буфер обмена и отслеживать изменения паролей с помощью git.
Вы можете редактировать хранилище паролей, используя стандартные команды оболочки unix вместе с командами pass. Нет никаких необычных форматов файлов или новых парадигм для изучения. Присутствует bash completion, так что вы можете просто нажать Tab для быстрого заполнения имени или команды, а также подсказки для zsh и fish, доступных в папке /completion. Очень активное сообщество пользователей pass создало множество необычных клиентов и графических интерфейсов для разных платформ, а также расширений для самого pass.

Команды pass подробно описана на странице руководства.

Как используется хранилище паролей


Мы можем перечислить все существующие пароли в хранилище:
zx2c4@laptop ~ $ pass
Password Store
├── Business
│   ├── some-silly-business-site.com
│   └── another-business-site.net
├── Email
│   ├── donenfeld.com
│   └── zx2c4.com
└── France
    ├── bank
    ├── freebox
    └── mobilephone

Мы так же можем отображать пароли:

zx2c4@laptop ~ $ pass Email/zx2c4.com
sup3rh4x3rizmynam3

Или скопировать их в буфер:
zx2c4@laptop ~ $ pass -c Email/zx2c4.com
Copied Email/jason@zx2c4.com to clipboard. Will clear in 45 seconds.

Появится удобный диалог ввода пароля с использованием стандартного gpg-агента (который может быть настроен на поддержание сессии в течение нескольких минут), поскольку все пароли зашифрованы.

Мы можем добавить существующие пароли в хранилище с помощью insert:

zx2c4@laptop ~ $ pass insert Business/cheese-whiz-factory
Enter password for Business/cheese-whiz-factory: omg so much cheese what am i gonna do

Эта функция так же работает с многострочными паролями или другими данными с помощью --multiline или -m, а пароли можно редактировать в текстовом редакторе по умолчанию, используя pass edit pass-name.

Утилита может генерировать (generate) новые пароли, используя / dev / urandom:

zx2c4@laptop ~ $ pass generate Email/jasondonenfeld.com 15
The generated password to Email/jasondonenfeld.com is:
$(-QF&Q=IN2nFBx

Можно сгенерировать пароли без символов, используя --no-symbols или -n, а так же скопировать его в буфер обмена вместо того, чтобы отображать его в консоли, используя --clip или -c.

Конечно же, пароли можно удалить:

zx2c4@laptop ~ $ pass rm Business/cheese-whiz-factory
rm: remove regular file ‘/home/zx2c4/.password-store/Business/cheese-whiz-factory.gpg’? y
removed ‘/home/zx2c4/.password-store/Business/cheese-whiz-factory.gpg’

Если хранилищем паролей выступает репозиторий git, поскольку каждая манипуляция создает фиксацию git, вы можете синхронизировать хранилище паролей с помощью pass git push и pass git pull, которые вызывают git-push или git-pull в хранилище.

Вы можете прочитать больше примеров и функций на здесь.

Настройка


Для начала есть одна команда для инициализации хранилища паролей:
zx2c4@laptop ~ $ pass init "ZX2C4 Password Storage Key"
mkdir: created directory ‘/home/zx2c4/.password-store’
Password store initialized for ZX2C4 Password Storage Key.

Здесь ZX2C4 Password Storage Key — это идентификатор ключа GPG. Вы можете использовать свой стандартный ключ GPG или использовать альтернативный, специально для хранилища паролей, как показано выше. Можно указать несколько ключей GPG для использования pass в группе, а разные папки могут иметь разные ключи GPG с помощью -p.

Мы можем дополнительно инициализировать хранилище паролей как репозиторий git:

zx2c4@laptop ~ $ pass git init
Initialized empty Git repository in /home/zx2c4/.password-store/.git/
zx2c4@laptop ~ $ pass git remote add origin kexec.com:pass-store

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

На странице руководства есть более подробный пример инициализации.

Скачивание pass


Текущая версия — 1.7.3.

Ubuntu / Debian

$ sudo apt-get install pass

Fedora / RHEL

$ sudo yum install pass

openSUSE

$ sudo zypper in password-store

Gentoo

# emerge -av pass

Arch

$ pacman -S pass

Macintosh

Хранилище паролей доступно через диспетчер пакетов Homebrew:

$ brew install pass

FreeBSD

# portmaster -d sysutils/password-store

Tarball

Архив содержит общий makefile, для которого достаточно выполнить простую команду sudo make install.

Репозиторий Git

Вы можете просмотреть репозиторий git или клонировать репозиторий:

$ git clone https://git.zx2c4.com/password-store

Все выпуски помечены тегами, и теги подписаны с помощью 0xA5DE03AE.

Организация данных


Имена пользователей, пароли, PIN-коды, веб-сайты, метаданные и так далее


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

Один из подходов — использовать многострочные функции pass (--multiline или -m in insert) и хранить сам пароль в первой строке файла, а дополнительную информацию — в последующих строках. Например, Amazon / bookreader может выглядеть так:

Yw|ZSNH!}z"6{ym9pI
URL: *.amazon.com/*
Username: AmazonianChicken@example.com
Secret Question 1: What is your childhood best friend's most bizarre superhero fantasy? Oh god, Amazon, it's too awful to say...
Phone Support PIN #: 84719

Это предпочтительная организационная схема, используемая автором.

Параметры --clip / -c копируют в буфер обмена только первую строку такого файла, тем самым упрощая получение пароля для форм входа в систему, сохраняя при этом дополнительную информацию в том же файле.

Другой подход — использовать папки и хранить каждый фрагмент данных внутри файла в этой папке. Например, Amazon / bookreader / password будет содержать пароль читателя внутри каталога Amazon / bookreader, а Amazon / bookreader / secretquestion1 будет содержать секретный вопрос, Amazon / bookreader / sensitivecode будет содержать что-то еще, связанное с учетной записью читателя и так далее. Можно так же сохранить пароль в Amazon / bookreader, а дополнительные данные — в Amazon / bookreader.meta. И еще один подход может заключаться в использовании многострочности, как описано выше, но помещать шаблон URL-адреса в имя файла, а не внутри файла.

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

Расширения для пропуска


Чтобы облегчить пользователям реализацию разнообразных вариантов использования, pass поддерживает расширения. Расширения, установленные в / usr / lib / password-store / extensions (или их разновидности, зависящие от дистрибутива), всегда включены. А те расширения, которые установлены в ~ / .password-store / .extensions / COMMAND.bash, включены, если переменная среды PASSWORD_STORE_ENABLE_EXTENSIONS имеет значение true. Дополнительные сведения см. На странице руководства.

Сообщество создало множество таких расширений:

  • pass-tomb: управлять хранилищем паролей в TOMB
  • pass-update: простой процесс обновления паролей
  • pass-import: универсальный инструмент для импорта из других менеджеров паролей
  • pass-extension-tail: способ печати только хвоста файла
  • pass-extension-wclip: плагин для использования wclip в Windows
  • pass-otp: поддержка токенов одноразового пароля (OTP)

Совместимые клиенты


Сообщество pass собрало впечатляющий список клиентов и графических интерфейсов для различных платформ:

Переход на pass


Чтобы освободить данные о паролях из лап других (раздутых) менеджеров паролей, разные пользователи придумали разные организации хранения паролей, которые лучше всего подходят для них. Некоторые пользователи предоставили сценарии, чтобы помочь импортировать пароли из других программ:

Авторские права и лицензия


pass был написан Джейсоном А. Доненфельдом из zx2c4.com и распространяется под лицензией GPLv2 +.

Внести свой вклад


Это очень активный проект со значительным количеством участников. Лучший способ внести свой вклад в хранилище паролей — это присоединиться к списку рассылки и отправлять патчи в формате git. Вы также можете присоединиться к обсуждению в #pass на Freenode.
Наши серверы можно использовать для хранения любой информации.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

et1aypandyuamqprsz3m2ntm4ky.png

© Habrahabr.ru