Skip to content

flolu/pass

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 

Repository files navigation

Manage and sync all your passwords and one-time-passwords on Linux

Requirements

Debian

apt install git gnupg pass rofi pass-extension-otp zbar-tools

Fedora

dnf install git gnupg pass pass-otp rofi zbar

Arch

pacman -S git gnupg pass pass-otp rofi zbar

Setup pass

  1. You need a GPG key

    gpg --list-keys
    gpg --full-gen-key
  2. Backup your GPG key

    # backup
    gpg -o private.gpg --export-options backup --export-secret-keys <gpg_key_fingerprint>
    
    # restore
    gpg --import-options restore --import private.gpg
  3. Initialize password store

    pass init <gpg_key_fingerprint>
    pass git init
  4. Manage passwords

    pass help

Setup passmenu

  1. Clone this repository

    git clone https://github.com/flolu/pass
    cd pass
  2. Install passmenu script

    sudo cp ./passmenu /usr/bin/
  3. Assign hotkey to passmenu

    In GNOME it can be done like this:

    • Settings πŸ – Keyboard πŸ – Shortcuts πŸ – Custom πŸ – Add
    • Enter passmenu as the "Command"
    • And set a "Shortcut" (e.g. Ctrl + Alt + P)
  4. Fix menu not focusing

    If you start the menu and it won't be focused, you need to disable Wayland and switch to X11. But don't worry it's very easy:

    • Edit /etc/gdm/custom.conf
    • Change #WaylandEnable=false to WaylandEnable=false
    • Reboot your computer
    • If you have a laptop and your touch gestures are broken afterwards, just install X11 Gestures extension and touchegg

Synchronization

I recommend syncing your passwords through an encrypted Git repository. You can read more about the reasoning in my blog post.

  1. Install git-remote-gcrypt

    • Debian: apt install git-remote-gcrypt
    • Fedora: dnf install git-remote-gcrypt
    • Arch: pacman -S git-remote-gcrypt
  2. Add encrypted remote

    pass git remote add <remote_name> gcrypt::<remote_url>
    pass git config remote.<remote_name>.gcrypt-participants "<key_fingerprint>"
    pass git config remote.<remote_name>.gcrypt-signingkey "<key_fingerprint>"
  3. Push changes

    pass git push origin master
  4. Pull changes

    git clone gcrypt::<remote_url>
    git pull origin master