Há anos procuro um armazenamento de senhas que funcione para mim e recentemente descobri o Pass on HackerNews. A ideia de armazenar senhas em um repositório git pode parecer estranha, mas no geral não é uma má ideia porque:
- Eu mantenho um repositório git localmente no meu computador
- Todas as senhas são protegidas por criptografia GPG, portanto, mesmo se eu tiver acesso SSH ao meu computador, o vazamento não afetará a segurança
Eu uso -c para copiar / colar senhas. Existe uma extensão para o navegador, mas copiar e colar é mais conveniente para mim pessoalmente. Problemas de sincronização com o telefone e todos os dispositivos Linux também não valem a pena (porque é apenas git).
Estou compartilhando com vocês a tradução da página de boas-vindas do Passe.
O gerenciamento de senhas deve ser simples e seguir a filosofia Unix . Usando pass, cada uma de suas senhas é armazenada em um arquivo gpg criptografado, cujo nome é igual ao nome do recurso ou site ao qual a senha fornecida está vinculada. Esses arquivos criptografados podem ser organizados em hierarquias de pastas convenientes, copiados de mídia para mídia e geralmente processados usando qualquer utilitário de gerenciamento de arquivo de linha de comando.
Com o passe, o gerenciamento de arquivos de senha individuais é extremamente fácil. Todas as senhas são armazenadas em ~ / .password-store, e pass fornece vários comandos convenientes para adicionar, editar, gerar e recuperar senhas. Este é um script Shell muito curto e simples. É capaz de colocar temporariamente as senhas na área de transferência e rastrear alterações de senha usando o git.
Você pode editar o armazenamento de senha usando comandos shell Unix padrão em conjunto com os comandos pass. Não existem formatos de arquivo sofisticados ou novos paradigmas para aprender. A conclusão do Bash está presente, então você pode simplesmente pressionar Tab para preencher rapidamente um nome ou comando, bem como dicas para zsh e fish, disponíveis na pasta / completed . A comunidade muito ativa de usuários do passe criou muitos clientes e GUIs incomuns para diferentes plataformas, bem como extensões para o próprio passe.
A passagem das equipes é descrita em detalhes no manual da página .
Como o armazenamento de senha é usado
Podemos listar todas as senhas existentes na loja:
zx2c4@laptop ~ $ pass Password Store ├── Business │ ├── some-silly-business-site.com │ └── another-business-site.net ├── Email │ ├── donenfeld.com │ └── zx2c4.com └── France ├── bank ├── freebox └── mobilephone
Também podemos exibir senhas:
zx2c4@laptop ~ $ pass Email/zx2c4.com sup3rh4x3rizmynam3
Ou copie-os para a área de transferência:
zx2c4@laptop ~ $ pass -c Email/zx2c4.com Copied Email/jason@zx2c4.com to clipboard. Will clear in 45 seconds.
Uma caixa de diálogo conveniente para inserir uma senha aparecerá usando um agente gpg padrão (que pode ser configurado para manter uma sessão por vários minutos), uma vez que todas as senhas são criptografadas.
Podemos adicionar senhas existentes à loja usando 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
Esta função também funciona com senhas de várias linhas ou outros dados usando --multiline ou -m, e as senhas podem ser editadas no editor de texto padrão usando senha de edição de senha.
O utilitário pode gerar novas senhas usando / dev / urandom:
zx2c4@laptop ~ $ pass generate Email/jasondonenfeld.com 15 The generated password to Email/jasondonenfeld.com is: $(-QF&Q=IN2nFBx
É possível gerar senhas sem símbolos usando --no-symbols ou -n, e copiá-las para a área de transferência ao invés de exibi-las no console usando --clip ou -c.
Você pode, é claro, remover senhas:
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’
Se o repositório de senha for um repositório git, uma vez que cada manipulação cria um git commit, você pode sincronizar o repositório de senha com pass git push e pass git pull, que chama git-push ou git-pull no repositório.
Você pode ler mais exemplos e funções aqui .
Costumização
Para começar, há um comando para inicializar o armazenamento de senhas:
zx2c4@laptop ~ $ pass init "ZX2C4 Password Storage Key" mkdir: created directory ‘/home/zx2c4/.password-store’ Password store initialized for ZX2C4 Password Storage Key.
Aqui, a chave de armazenamento de senha ZX2C4 é a ID da chave GPG. Você pode usar sua chave GPG padrão ou uma alternativa específica para armazenamento de senha, conforme mostrado acima. Múltiplas chaves GPG podem ser especificadas para usar a passagem em um grupo, e diferentes pastas podem ter diferentes chaves GPG com -p.
Podemos opcionalmente inicializar o armazenamento de senha como um repositório 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
Se um repositório git for inicializado, pass cria um commit dentro desse repositório git toda vez que o armazenamento de senha é manipulado.
Há um exemplo mais detalhado de inicialização na página do manual .
Passe de download
A versão atual é 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
O cofre de senha está disponível através do Homebrew Package Manager :
$ brew install pass
FreeBSD
# portmaster -d sysutils/password-store
Tarball
O arquivo contém um makefile geral, para o qual um simples comando sudo make install é suficiente.
Repositório Git
Você pode navegar no repositório git ou clonar o repositório:
$ git clone https://git.zx2c4.com/password-store
Todos os lançamentos são marcados e marcados com 0xA5DE03AE.
Organização de dados
Nomes de usuário, senhas, PINs, sites, metadados e assim por diante
O armazenamento de senhas não requer nenhum esquema ou tipo de organização específico para seus dados, pois é apenas um arquivo de texto que pode conter dados arbitrários. Embora o caso mais comum seja armazenar uma senha para cada entrada, alguns usuários avançados decidem que gostariam de armazenar no armazenamento de senhas não apenas sua própria senha, mas também as respostas a perguntas de segurança, URLs de sites e outras informações confidenciais ou metadados. ... Uma vez que o cofre de senhas não requer seu próprio esquema, você pode escolher sua organização. Existem muitas estruturas válidas.
Uma abordagem é usar as funções de passagem de várias linhas (--multiline ou -m na inserção) e armazenar a própria senha na primeira linha do arquivo, com informações adicionais nas linhas subsequentes. Por exemplo, Amazon / leitor de livros pode ser assim:
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
Este é o organograma preferido usado pelo autor.
As opções --clip / -c copiam apenas a primeira linha de tal arquivo para a área de transferência, tornando mais fácil recuperar a senha para formulários de login enquanto armazena informações adicionais no mesmo arquivo.
Outra abordagem é usar pastas e armazenar cada parte dos dados dentro de um arquivo nessa pasta. Por exemplo, Amazon / bookreader / password conterá a senha do leitor dentro do diretório Amazon / bookreader e Amazon / bookreader / secretquestion1 conterá a pergunta secreta, Amazon / bookreader / sensitivecode conterá algo mais relacionado à conta do leitor e assim por diante . Você também pode salvar sua senha na Amazon / bookreader e dados adicionais na Amazon / bookreader.meta. E outra abordagem pode ser usar várias linhas conforme descrito acima, mas colocar o padrão de URL no nome do arquivo, não dentro do arquivo.
Em suma - as possibilidades aqui são extremamente numerosas e existem muitos outros organogramas não mencionados acima; você tem a liberdade de escolher o que melhor se adapta ao seu fluxo de trabalho.
Pular extensões
Para tornar mais fácil para os usuários implementar uma variedade de casos de uso, o pass oferece suporte a extensões. As extensões instaladas em / usr / lib / password-store / extensions (ou seus tipos dependentes de distribuição) estão sempre incluídas. E as extensões instaladas em ~ / .password-store / .extensions / COMMAND.bash são habilitadas se a variável de ambiente PASSWORD_STORE_ENABLE_EXTENSIONS for verdadeira. Para obter mais informações, consulte No guia da página .
A comunidade criou muitas dessas extensões:
- pass-tomb : gerencia o armazenamento de senha no TOMB
- pass-update : um processo simples para atualizar senhas
- pass-import : uma ferramenta versátil para importar de outros gerenciadores de senhas
- pass-extension-tail : uma maneira de imprimir apenas o final de um arquivo
- pass-extension-wclip : um plugin para usar wclip no Windows
- pass-otp : suporte para tokens de senha descartável (OTP)
Clientes compatíveis
A comunidade do passe reuniu uma lista impressionante de clientes e GUIs para várias plataformas:
- passmenu : script dmenu extremamente útil e maravilhoso
- qtpass : um cliente de interface de usuário de plataforma cruzada
- Android-Password-Store : Android App
- passforios: iOS
- pass-ios: () iOS
- passff: Firefox
- browserpass: Chrome
- Pass4Win: Windows
- pext_module_pass: Pext
- gopass: Go
- upass:
- alfred-pass:
- pass-alfred:
- pass.applescript: OS X
- pass-git-helper: git
- password-store.el: emacs
- XMonad.Prompt.Pass: Xmonad
pass
Para liberar os dados de senha das garras de outros (inchados) gerenciadores de senhas, diferentes usuários criaram diferentes organizações de armazenamento de senhas que funcionam melhor para eles. Alguns usuários forneceram scripts para ajudar a importar senhas de outros programas:
- 1password2pass.rb : importa os dados 1Password txt ou 1pif
- keepassx2pass.py : importa dados KeepassX XML
- keepass2csv2pass.py : importa dados Keepass2 CSV
- keepass2pass.py : importa dados XML Keepass2
- fpm2pass.pl : Importa os dados XML do gerenciador de senhas Figaro.
- lastpass2pass.rb : importa dados CSV Lastpass
- kedpm2pass.py : Importa dados do Ked Password Manager
- revelation2pass.py: Revelation Password Manager
- gorilla2pass.rb: Password Gorilla
- pwsafe2pass.sh: PWSafe
- kwallet2pass.py: KWallet
- roboform2pass.rb: Roboform
- password-exporter2pass.py:
- pwsafe2pass.py: pwsafe
- firefox_decryptgithub.com/Unode/firefox_decrypt/#readme: Firefox,
O passe foi escrito por Jason A. Donenfeld de zx2c4.com e está licenciado sob a GPLv2 +.
Contribuir
Este é um projeto muito ativo com um número significativo de participantes . A melhor maneira de contribuir com o repositório de senhas é ingressar na lista de discussão e enviar patches no formato git. Você também pode participar da discussão #pass no Freenode.
Nossos servidores podem ser usados para armazenar qualquer informação.
Cadastre-se pelo link acima ou clicando no banner e ganhe 10% de desconto no primeiro mês de aluguel de um servidor de qualquer configuração!