開発用パスワード・キーの管理をしたい
env.txt だとか .git/config とか .gitconfig とか、パスワードとAPIキーが散らばる。どこかに保存したい。
keyring コマンドで管理する。
linux には keyring コマンドがある。これを使うと機密な文字列をマスターパスワードで管理できる、
インストール
Ubuntu Desktopなどは最初から入っている。(apt install python3-keyring )
コマンドからだけ使う場合には、次のコマンドをつかう
apt install python3-keyrings.alt
python3-keyring は保存先の設定が必要でDesktopならGNOMEキーリングになるのだが、ServerやMinmalはそれらを扱えないので、暗号化ファイルをバックエンドに使う。
バックエンド
バックエンドは、OSに依存する安全な保存先が使われる。alt を使った場合は暗号化ファイルになる。
macOSならKeychainなど、WindowsならCredentialsなどが選ばれる。それ以外もプラグインを使えば使える。
バックエンドを未設定ならエラーになる。
私が試したときには次のようなエラーになった。
keyring set system username
Password for 'username' in 'system':
Traceback (most recent call last):
File "/usr/bin/keyring", line 33, in <module>
sys.exit(load_entry_point('keyring==22.0.1', 'console_scripts', 'keyring')())
File "/usr/lib/python3/dist-packages/keyring/cli.py", line 135, in main
return cli.run(argv)
File "/usr/lib/python3/dist-packages/keyring/cli.py", line 68, in run
return method()
File "/usr/lib/python3/dist-packages/keyring/cli.py", line 85, in do_set
set_password(self.service, self.username, password)
File "/usr/lib/python3/dist-packages/keyring/core.py", line 60, in set_password
get_keyring().set_password(service_name, username, password)
File "/usr/lib/python3/dist-packages/keyring/backends/fail.py", line 25, in get_password
raise NoKeyringError(msg)
keyring.errors.NoKeyringError: No recommended backend was available. Install a recommended 3rd party backend package; or, install the keyrings.alt package if you want to use the non-recommended backends. See https://pypi.org/project/keyring for details.
パスワードを保存する
初回起動の場合はマスターパスが必要。
takuya@raspi-ubuntu:~$ keyring set system username Password for 'username' in 'system': 保存したいパスワード Please set a password for your new keyring: マスタ・パスワード Please confirm the password: マスタ・パスワード
2回目以降はパスワードだけを保存する。
takuya@raspi-ubuntu:~$ keyring get system username
Please enter password for encrypted keyring:
password
保存するパスワードに「確認」がないのでミスタイプをしないように注意する。
保存したパスワードを確認
確認は、取得コマンドで行える。
keyring get system username
取得コマンドを使うと、ターミナルに表示されるので取り扱いには注意する。
pbcopy や /dev/nullをつかっていい感じに画面に表示させないように使う。
keyring get system username | pbcopy >/dev/null
windowsで使う場合。
これは、嬉しいことにWindowsでも使える。
python.exe -m pip pip install keyring
Power Shellで保存する。

windowsに保存したパスワードの例
WindowsではスタートメニューからCredentials を検索して

Windows Credentials Lockerを選んで

中身をみるとパスワードが保存されている。

Windows credentials は「ウインドウズ・資格情報」という面倒な日本語訳でとても検索しにくいためでしょうか、まったく情報がありません。Windows Credentialをキーチェインの代わりに使えないかと探していたらKeyringを見つけました。
WindowsはデフォルトでKeyringコマンドを搭載するべきだと思う。
Cmd.exe/PowerShell からは使えるが、MinGw/Cygwinからは使えない。WSL(v1)からは使える。Windows Logon情報と連携しないためだろうか。
バックエンドをBitwardenなどに
バックエンドをBitwardenなどのパスワード・マネージャーにすることもできる。
できるけど、bw-cli だけで事足りるので不要である。
セキュリティに関する愚痴
パスワード管理ソフトを課金するくらいならWindows資格情報を使えばいいし、公開鍵をZipパスワードで保護するような無意味なことをやってないで、ss-agentを使えばいいし。macOS keychains みたいにWindowsCredentialsをSSH-AGENTで使えたらいいのにね。