Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

Password Store(pass)は、GNU Privacy Guard(GPG)とGitを活用してLinuxシステム上のパスワードを安全に保管・管理できるシンプルなUNIXプログラムです。軽量かつ高速で動作しますが、そのシンプルさゆえに、ターミナルから毎回コマンドを打ってパスワードを取り出すのはやや面倒に感じることもあります。そこで便利なのがEmacsです。Emacsを使えば、この一連の操作をシームレスに自動化できます。

そのために用意されているのが、「password-store」というEmacsパッケージです。これはPass本体のコマンドラインインターフェースに対するフロントエンドとして機能します。バックエンド同様にシンプルで軽量であり、さらにコミュニティが開発した多数のプラグインで機能を拡張できる点も魅力です。

Password Storeはどのように動作するのか?

Password Storeは、プレーンテキストだけでパスワードを作成・編集できる非常にシンプルなパスワードマネージャーです。登録したアカウントごとに、1つのテキストファイルだけを保持する仕組みになっています。

一見すると安全ではない古めかしい方式に思えますが、Password Storeは管理対象のすべてのファイルをGPGで暗号化することでこれを実現しています。これにより、プレーンテキストの手軽さとGPGによる堅牢な暗号化という、両方のメリットを享受できます。

Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

また、プログラムが扱うのは単純なファイルなので、フォルダごとに分類して整理することも自由自在です。

Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

さらに、パスワードファイルには追加情報を自由に書き込めます。というのも、Password Storeが必ず読み取るのはファイルの1行目だけだからです。たとえば、あるフォーラムアカウントのパスワードファイルは次のようになります。

thisismysupersecretpassword
===============INFORMATION==============
Username: MySuperCoolName
Security Question 1: Yogi
Security Question 2: 1992 Toyota Corolla
Security Question 3: Smith

OTP Key: aabbccddff11223344
========================================

Password Storeは1行目以降を読み込まないため、アカウントに関する補足情報を好きな形式で追記できます。つまり、独自のディレクトリ構成だけでなく、独自のフォーマットでもパスワードを管理できるのです。

Password Storeのインストール

構造がシンプルなため、Password Storeのインストールはとても簡単です。ほぼすべての主要Linuxディストリビューションで利用可能です。DebianやUbuntuではaptを使って次のコマンドでインストールできます。

sudo apt install pass gnupg

Fedoraの場合はdnfを使います。

sudo dnf install pass gnupg2

Arch Linuxではpacmanを使いましょう。

sudo pacman -S pass gnupg

パスワードストアの作成

インストールが完了したら、パスワードストアの作成には次の2つの準備が必要です。

  • まず、GPG鍵を用意します。これがあなたのPassword Storeに紐づく鍵となります。ストア専用の新しい鍵を作成してもよいですし、既存の鍵を使い回しても構いません。
  • 次に、Password Store自体を初期化します。GPGだけで運用するシンプルなストアにするか、Gitでバージョン管理するストアにするかを選べます。どちらの場合も、作成には1つのコマンドを実行するだけです。

ストア用のGPG鍵を作成する

Password Storeは暗号化処理のすべてをGPGに依存しています。そのため、自分専用のGPG鍵を作成し、パスワードがあなただけしか復号できない状態を確保することが重要です。

  1. GPG鍵の作成は非常に簡単です。次のコマンドを実行しましょう。
gpg --full-generate-key
  1. すると鍵作成ウィザードが起動し、GPG鍵の各種オプションを選択できるようになります。
  2. まず、鍵に使用する暗号化アルゴリズムの種類を尋ねられます。特別な理由がなければ、デフォルトのRSAアルゴリズムで十分です。Enterキーを押すだけで選択できます。
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

GPG鍵の長さと有効期限を設定する

  1. 続いて、鍵の長さ(ビット数)を指定します。一般的な目安として、長い鍵ほど短い鍵よりも解読が困難になります。ここでは例として4096ビットを選択しました。
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説
  1. 次に、鍵に有効期限を設けるかどうかを尋ねられます。一般に、一定期間で有効期限が切れる鍵を使うのは良い習慣とされています。万が一鍵が漏洩したり、パスフレーズを忘れたりした場合でも、自動的に失効させられるからです。
  2. 筆者は忘れないように短めの有効期限を好んで設定しています。ここでは「6m」(6か月)を指定しました。
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説
  1. 続いて、名前とメールアドレスを入力します。これらはデータの暗号化・復号時に表示される識別情報として使われるものです。
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説
  1. 最後に、この鍵へアクセスするためのパスフレーズを設定します。強度が高く、かつ記憶できるものにしましょう。パスワードストアにアクセスするたび――既存のパスワードをコピーするときも、新しいパスワードを追加するときも――このパスフレーズが必要になるからです。

パスワードストアを初期化する

ここまでできたら、次はパスワードストアを初期化します。方法は2通りあります。

  • 1つ目は、GPGによる標準的な暗号化のみで運用するシンプルなストアです。パスワードの保存と取得だけを手軽に行いたい場合に向いています。

ターミナルで次のコマンドを実行してください。

cd /home/$USER/ && pass init "your-gpg-email"
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

これにより、ホームディレクトリ直下に「.password-store」という名前のパスワードストアが作成されます。

  • もう1つは、Gitでバージョン管理されるストアです。こちらを使うと変更履歴を細かく管理でき、過去の変更に簡単に戻せます。頻繁にパスワードを変更する人にとって非常に有用な選択肢です。

Git管理のストアを始めたい場合は、次のコマンドを実行します。

pass git init
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

これでストアのGitリポジトリが初期化されます。以降は、通常のgitコマンドの先頭に「pass」を付けることで、ストアに対してGitの全コマンドを利用できます。たとえば、次のコマンドでストアに登録済みの全リモートURLを確認できます。

pass git remote get-url --all

EmacsとPassword Storeを連携させる

Emacsユーザーなら、Password StoreをEmacsクライアントに統合できます。まずはMELPAリポジトリから「password-store」パッケージをダウンロードしましょう。

Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

MELPAは標準のEmacsには含まれていないため、最初に明示的に設定へ追加する必要があります。

  1. そのためには、以下のコードを「init.el」ファイルに追記します。
(add-to-list 'package-archives
    '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
  1. 追記したら、設定を反映させるためにEmacsを再起動します。
  2. Alt+Xを押して package-install と入力しましょう。ミニバッファにインストールしたいパッケージ名を尋ねられるので、password-store と入力します。
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説
  1. Emacsがpassword-storeパッケージのソースコードを取得・コンパイル・インストールします。完了後、Alt+Xを押して password-store-version と入力すれば、コマンドが使えるようになったことを確認できます。

新しいパスワードをストアに追加する

  1. 準備が整えば、ストアへのアクセスはとても簡単です。たとえば新しいパスワードを追加するには、Alt+Xを押して password-store-insert と入力します。
  2. するとプロンプトが表示され、挿入したいパスワードの名前を尋ねられます。
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説
  1. 続いてパスワード本体を入力します。他のパスワード入力欄と同様、ここでの入力内容はマスクされて表示されます。
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

ストアのエントリを編集する

Password Storeの大きな強みのひとつは、パスワードファイルを自由にカスタマイズできることです。これにより、どんな内容でも格納できる柔軟なフォーマットを実現できます。

  1. そのためには、パスワードファイルを編集します。Alt+Xを押して password-store-edit と入力してください。
  2. ここでもプロンプトが表示され、編集したいエントリの名前を尋ねられます。筆者は「forum-account」エントリにセキュリティ質問を追加したいので、それを指定しました。
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説
  1. 続いてGPG鍵のパスフレーズの入力を求められます。認証に成功すると、Emacsが別バッファにパスワードファイルの内容を開いてくれるので、そこで自由に編集できます。
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説
  1. 編集が終わったら、Ctrl+X、Ctrl+Sでファイルを保存します。その後、Ctrl+X、Kを押して編集を確定しましょう。これでパスワードバッファが閉じられ、変更がPassword Storeのファイルツリーにコミットされます。

ストアからパスワードを削除する

同様に、ストアからパスワードを削除するのも簡単です。Alt+Xを押して password-store-remove と入力すれば、削除したいパスワードの名前を尋ねるプロンプトが現れます。

筆者の場合、もう訪問しなくなったサイトの古いパスワードを削除したかったので、「my-old-password」と入力してEnterを押しました。

Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説 Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

ストアからパスワードをコピーする

最後に、このパッケージはEmacsから直接パスワードをクリップボードにコピーすることもできます。サービスやアカウントにログインする際に素早くパスワードを取り出せるので、実用性が高い機能です。

  1. Alt+Xを押して password-store-copy と入力します。
  2. するとプロンプトが表示され、クリップボードにコピーしたいパスワードの名前を尋ねられます。
Linuxで「pass」(Password Store)を使ってパスワードを管理する方法 ― Emacs連携も解説

以上で完了です!これでEmacsをパスワードマネージャーとして使いこなす基本が身につきました。同時に、Password Storeというシンプルなファイルベースのパスワードマネージャーの使い方もマスターできたはずです。

よくある質問

1. Password StoreでKeepassXCのようなパスワード自動生成はできる?

はい、できます!このパッケージは初期状態のまま、新規アカウント用のパスワードを生成する機能を備えています。Alt+Xを押して password-store-generate と入力すればアクセスできます。

新しいアカウント名の入力を求めた後、十分にランダム性のあるパスワードを自動生成してくれます。生成されたパスワードは、前述の password-store-copy 関数でコピーできます。

2. ワンタイムパスワード(OTP)対応は可能?

はい、可能です!Password Storeには、コマンドラインからOTPを管理できる優れたプラグインが存在します。ただし利用するには、OTPを生成するための追加パッケージのインストールが必要です。

たとえばDebianやUbuntuでは、次のコマンドでインストールできます。

sudo apt install pass-extension-otp

Fedoraではdnfを使います。

sudo dnf install pass-otp

Arch Linuxではpacmanを使いましょう。

sudo pacman -S pass-otp

インストール後、次のコマンドでストア内のアカウントにOTPリンクを挿入できます。

pass otp insert "account-name"

以降は pass otp "account-name" を実行するだけで、そのアカウントのOTPコードをいつでも生成できます。

3. Emacs上でパスワードをツリー形式で表示できる?

残念ながら標準機能では不可です。しかし、ミニバッファ補完パッケージを使えば、タブ補完経由で登録済みの全パスワードを一覧表示できます。

この機能を提供する代表的なパッケージがhelmとmctです。どちらもGNU ELPAリポジトリで公開されているため、package-install 関数から簡単にインストールできます。


  1. Topgradeを使ってLinuxシステムを丸ごとアップグレードする方法

    Linuxのアップグレードは、昔に比べて格段に簡単になりました。かつては一部のソフトウェアだけを個別に更新し、本格的な刷新は次期バージョンのディストリビューションが出るのを待ってクリーンインストールするのが一般的でした。しかし今では、パッケージ管理システムのおかげで、コマンド一つでシステムを最新の状態に保てるようになっています。とはいえ、標準のパッケージマネージャーでもシステムのすべてを更新できるわけではありません。Ruby Gemsや、Linuxbrewのようなサードパーティ製パッケージマネージャーで導入したパッケージはどうでしょうか?Gitで管理しているdotfilesなどの設定ファイルの

  2. ランダムパスワードジェネレーターの使い方と選び方を徹底解説

    デジタル化が進む現代において、パスワードは非常に重要な存在です。すべてのアプリケーションやシステムに適切なパスワードを設定することは不可欠です。もしデバイスがパスワードなしで無防備なまま放置されれば、ハッカーにアクセスされ、コンピューターの安全性が脅かされてしまいます。つまり、適切なパスワードを見つけ、各アプリケーションに割り当てることが何より大切なのです。 「ハッキングされにくく、かつ覚えやすいパスワードはどうすれば手に入るのだろう?」と悩んでいる方はいませんか?その答えこそがランダムパスワードジェネレーターです。優れたパスワードジェネレーターを使えば、適切なパスワードを自動的に作成できます