Skip to main content

Manage your login credentials from the terminal painlessly.

Project description

Passpie: Manage login credentials from terminal
===============================================

|Passpie console interface|
---------------------------

`Passpie <https://marcwebbie.github.io/passpie>`__ helps you manage
login credentials from the terminal with a colorful andconfigurable
interface. Password files are saved into yaml text files with passwords
encrypted using
`GnuPG <http://en.wikipedia.org/wiki/GNU_Privacy_Guard>`__. Use your
master passphrase to decrypt login credentials, copy passwords to
clipboard syncronize them to a git repository and more...

|pypi| |unix\_build| |windows\_build| |coverage|
------------------------------------------------

Installation
------------

.. code:: fish

pip install passpie

Or on a *mac*, with `homebrew <http://brew.sh>`__:

.. code:: fish

brew install passpie

Or to install the *latest development* version:

.. code:: fish

pip install -U https://github.com/marcwebbie/passpie/tarball/master

Quickstart
----------

.. code:: fish

# initialize a passpie database
passpie init

# add some credentials
passpie add foo@example.com
passpie add bar@example.com

# add some credential with random passwords
passpie add bar@github.com --random
passpie add spam@egg --random
passpie add foo@github.com --random
passpie add bar@github.com --random

# add spam@egg with random password and copy to clipboard
passpie add spam@egg.local --random --copy

# edit credential "foo@example.com"
passpie update foo@example.com

# copy password from credential "foo@example.com" to clipboard
passpie copy foo@example.com

# copy password to clipboard with clearing clipboard after 10 seconds
passpie copy foo@example.com --clear 10

# search credentials by string "exam"
passpie search exam

# search credentials using regular expressions
passpie search 'foo|bar'

# remove some credentials
passpie remove foo@example.com
passpie remove foo@github.com

# see the database change history
passpie log

# reset to a previous version of the database
passpie --reset-to 5

# check database status
passpie status

# print all credentials as a table with hidden passwords
passpie

# purge all credentials from database
passpie purge

# shows help. Option `--help`
passpie --help

Randomizing credentials:

.. code:: fish

# Adding credential with random password pattern
passpie add john.doe@example.com --random --pattern '[0-9]{5}[a-z]{5}'

# Updating credential with random password pattern
passpie update john.doe@example.com --random --pattern "[0-9\#\$\%\w\ ]{32}"

# Adding credential with random password and copy generated password to clipboard
passpie add john.doe@example.com --copy --random --pattern '[0-9]{5}[a-z]{5}'

Playing with *volatile* database.

.. code:: fish

# Listing credentials from a remote database
passpie -D https://foo@example.com/user/repo.git

# Adding credentials to a remote database and autopushing changes
passpie -D https://foo@example.com/user/repo.git --autopush "origin/master" add foo+nouveau@example.com

# Exporting environment variables
export PASSPIE_DATABASE=https://foo@example.com/user/repo.git
export PASSPIE_AUTOPULL=origin/master
export PASSPIE_AUTOPUSH=origin/master

# List remote credentials
passpie

# Copy remote `foo@example.com` password
passpie copy foo@example.com

# Add credential with random password directly to remote
passpie add foo+nouveau@example.com --random --pattern "[0-9\#\$\%\w\ ]{32}"
passpie add foo+nouveau@example.com --random --pattern "[0-9\#\$\%\w\ ]{32}"

--------------

Commands
--------

+--------------------+---------------------------------------------------------+
| Command | Description |
+====================+=========================================================+
| **``add``** | Add new credential to database |
+--------------------+---------------------------------------------------------+
| **``complete``** | Generate completion scripts for shells |
+--------------------+---------------------------------------------------------+
| **``copy``** | Copy credential password to clipboard/stdout |
+--------------------+---------------------------------------------------------+
| **``export``** | Export credentials in plain text |
+--------------------+---------------------------------------------------------+
| **``import``** | Import credentials from file |
+--------------------+---------------------------------------------------------+
| **``init``** | Initialize new passpie database |
+--------------------+---------------------------------------------------------+
| **``log``** | Shows passpie database changes history |
+--------------------+---------------------------------------------------------+
| **``purge``** | Remove all credentials from database |
+--------------------+---------------------------------------------------------+
| **``remove``** | Remove credential |
+--------------------+---------------------------------------------------------+
| **``reset``** | Renew passpie database and re-encrypt all credentials |
+--------------------+---------------------------------------------------------+
| **``search``** | Search credentials by regular expressions |
+--------------------+---------------------------------------------------------+
| **``status``** | Diagnose database for improvements |
+--------------------+---------------------------------------------------------+
| **``update``** | Update credential |
+--------------------+---------------------------------------------------------+

Configuring passpie
-------------------

Global
~~~~~~

You can override passpie default configuration with a **passpierc**
file. Global user settings are read from the ``~/.passpierc``

Note that Passpie configuration files must be written as a valid
`yaml <http://yaml.org/>`__ file.

Per-database
~~~~~~~~~~~~

You can also add database specific configuration by creating a file
called ``.config`` inside database directory. These files are
automatically created when initializing databases.

Example:
~~~~~~~~

.. code:: yaml

path: ~/.passpie
homedir: ~/.gnupg
autopull: null
copy_timeout: 0
extension: .pass
genpass_pattern: "[a-z]{5} [-_+=*&%$#]{5} [A-Z]{5}"
headers:
- name
- login
- password
- comment
colors:
login: green
name: yellow
key_length: 4096
recipient: passpie@local
repo: true
short_commands: false
status_repeated_passwords_limit: 5
table_format: fancy_grid

Fields
~~~~~~

+-----------------------------------------+----------------------------------+
| Option | Description |
+=========================================+==================================+
| `path <./docs/configuration.md#path>`__ | Path to default database |
+-----------------------------------------+----------------------------------+
| `homedir <./docs/configuration.md#homed | Path to gnupg homedir |
| ir>`__ | |
+-----------------------------------------+----------------------------------+
| `recipient <./docs/configuration.md#rec | Default gpg recipient to |
| ipient>`__ | encrypt/decrypt credentials |
| | using keychains |
+-----------------------------------------+----------------------------------+
| `key\_length <./docs/configuration.md#k | Key generation length |
| ey_length>`__ | |
+-----------------------------------------+----------------------------------+
| `repo <./docs/configuration.md#repo>`__ | Create a git repo by default |
+-----------------------------------------+----------------------------------+
| `autopull <./docs/configuration.md#auto | Automatically pull changes from |
| pull>`__ | git remote repository |
+-----------------------------------------+----------------------------------+
| `copy\_timeout <./docs/configuration.md | Automatically clear password |
| #copy_timeout>`__ | from clipboard |
+-----------------------------------------+----------------------------------+
| `short\_commands <./docs/configuration. | Use passpie commands with short |
| md#short_commands>`__ | aliases. Like ``passpie a`` for |
| | ``passpie add`` |
+-----------------------------------------+----------------------------------+
| `status\_repeated\_passwords\_limit <./ | Repeat credential fullname on |
| docs/configuration.md#status_repeated_p | status list |
| asswords_limit>`__ | |
+-----------------------------------------+----------------------------------+
| `extension <./docs/configuration.md#ext | Credential files configurable |
| ension>`__ | extension |
+-----------------------------------------+----------------------------------+
| `genpass\_pattern <./docs/configuration | Regular expression pattern used |
| .md#genpass_pattern>`__ | to generate random passwords |
+-----------------------------------------+----------------------------------+
| `headers <./docs/configuration.md#heade | Credential columns to be printed |
| rs>`__ | |
+-----------------------------------------+----------------------------------+
| `table\_format <./docs/configuration.md | Defines how the Table is |
| #table_format>`__ | formated |
+-----------------------------------------+----------------------------------+
| `colors <./docs/configuration.md#colors | Column data colors |
| >`__ | |
+-----------------------------------------+----------------------------------+

More configuration details on `configuring
passpie <./docs/configuration.md>`__

Tutorials
---------

- `Diving into *fullname* syntax <./docs/fullname.md>`__
- `Grouping Credentials <./docs/grouping.md>`__
- `Multiple Databases <./docs/multiple_databases.md>`__
- `Syncing Credentials <./docs/syncing.md>`__
- `Version Control With Git <./docs/syncing.md>`__
- `Exporting Credentials <#>`__
- `Importing Credentials <./docs/importing.md>`__
- `Contributing <./docs/contributing.md>`__

Common issues
-------------

GPG not installed. https://www.gnupg.org/
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

You don't have gpg installed or it is not working as expected

Make sure you have `gpg <https://www.gnupg.org/>`__ installed:

Ubuntu:

::

sudo apt-get install gpg

OSX:

::

brew install gpg

xclip or xsel not installed
^^^^^^^^^^^^^^^^^^^^^^^^^^^

You don't have *copy to clipboard* support by default on some linux
distributions.

Ubuntu:

::

sudo apt-get install xclip

passpie init hangs
^^^^^^^^^^^^^^^^^^

Sometimes it takes a long time because of entropy on the host machine.
It was noticed a long time on an ubuntu server(even more if it is a
virtual machine). You could try using ``haveged`` to generate enough
entropy.

On ubuntu:

::

sudo apt-get install haveged

Licence |license|
-----------------

Copyright (c) 2014-2016 Marcwebbie, http://github.com/marcwebbie

Full license here: `LICENSE <./LICENSE>`__

.. |Passpie console interface| image:: https://github.com/marcwebbie/passpie/raw/master/images/passpie.png
.. |pypi| image:: https://img.shields.io/pypi/v/passpie.svg?style=flat-square&label=latest%20version
:target: https://pypi-hypernode.com/pypi/passpie
.. |unix\_build| image:: https://img.shields.io/travis/marcwebbie/passpie/master.svg?style=flat-square&label=unix%20build
:target: https://travis-ci.org/marcwebbie/passpie
.. |windows\_build| image:: https://img.shields.io/appveyor/ci/marcwebbie/passpie.svg?style=flat-square&label=windows%20build
:target: https://ci.appveyor.com/project/marcwebbie/passpie
.. |coverage| image:: https://img.shields.io/codecov/c/github/marcwebbie/passpie.svg?style=flat-square&label=coverage
:target: https://codecov.io/github/marcwebbie/passpie
.. |license| image:: http://img.shields.io/badge/license-MIT-blue.svg?style=flat-square
:target: ./LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

passpie-1.1.0.tar.gz (28.1 kB view details)

Uploaded Source

Built Distribution

passpie-1.1.0-py2.py3-none-any.whl (39.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file passpie-1.1.0.tar.gz.

File metadata

  • Download URL: passpie-1.1.0.tar.gz
  • Upload date:
  • Size: 28.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for passpie-1.1.0.tar.gz
Algorithm Hash digest
SHA256 53e491cb3127b9295e86a08cb3a3c2fe0ad70965474b1a583b7533951c5a418c
MD5 88a1d499d96a8dd82708d4acf27df769
BLAKE2b-256 76af470966c152b671ca66225c5bc9c79e2fd187c31d623360133bb18278de46

See more details on using hashes here.

Provenance

File details

Details for the file passpie-1.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for passpie-1.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c0f7a5f56e4ddc86f0dbcd7e6a2f4b1d0cc88578397bd83084d72d1598777bb8
MD5 1a39ce0b0b1b2457d4c1d8a3f8f00765
BLAKE2b-256 4329c1147f29bce12f63658356c87720d8695373ba719b30cbf6c62afb1d2cc8

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page