KDE WalletにSSH鍵のパスワードを保存する
SSH鍵のパスワードをKDE Walletに持たせると,毎回入力する手間を省くことができます.
この記事では,SSH Agentの設定と,パスワードをKDE Walletに保存する設定を説明します.
この記事の内容は概ね SSH Keys - ArchWiki, KDE Wallet - ArchWiki に倣っていますので,よくわからないところがあればそちらも参考にしてください.
前提
- KDE Walletはインストール済みとします.
- パスワード付きのSSH鍵は作成済みで,
~/.ssh/
に置いてあるとします(ファイル名は何でも構いません).
手順
SSH Agentの自動起動
systemdからSSH Agentを自動起動するように設定します.
次のようにssh-add
コマンドを実行してエラーが表示されなければ,
ssh-agentが既に設定されていますので,この項は飛ばしてください.
$ ssh-add
Could not open a connection to your authentication agent.
まず,次のコマンドを実行して,ssh-agent.serviceを有効化・起動します (この際,sudoをつけてはいけません).
systemctl --user enable ssh-agent
systemctl --user start ssh-agent
systemctl --user status ssh-agent
で,正常に起動したことを確認してください.
次に,ssh-add等からSSH Agentを使えるようにするため,起動時に環境変数を設定するようにします.
.config/environment.d/ssh_auth_socket.conf
を任意のエディタで開き(個人的にはnanoがおすすめですが何でも構いません),
次の内容を書き込んでください.
SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"
最後に,設定を反映させるため,一度ログアウトしてからもう一度ログインしておいてください.
再ログインすると,ssh-add
が使えるようになっているはずです.
KDE WalletにSSH鍵のパスワードを保存する
(ArchWikiには起動時にssh-addを実行するよう書かれていますが,毎回パスワードを聞かれてしまうので,当記事では行いません.)
起動時に環境変数を設定するようにするだけです.
~/.config/environment.d/ssh_askpass.conf
をエディタで開き,次の内容を書き込んでください.
SSH_ASKPASS='/usr/bin/ksshaskpass'
SSH_ASKPASS_REQUIRE=prefer
使用時に自動でssh-addするよう設定する
~/.ssh/config
をエディタで開いてください.
Host github.com
IdentityFile ~/.ssh/id_ed25519
このような設定項目が見えると思いますので,
SSH Agentを使いたいHostに対して,次のようにAddKeysToAgent yes
を追記してください.
Host github.com
IdentityFile ~/.ssh/id_ed25519
AddKeysToAgent yes
鍵を使う
最初にその秘密鍵を使うときにパスワードを聞かれますので, パスワードを入力し,Remember passwordにチェックを入れて OKを押してください.
これで次回からは聞かれなくなります.
VSCodeで使えるようにするには追加の設定が必要ですので, こちらも参照してください.
まとめ
この記事ではssh-add
を自動で行う設定はしませんでした.
これをすると,KDE Walletにパスワードを保存していたとしても,
起動時に毎回パスワードを聞かれることになります.
その代わりとしてAddKeysToAgent yes
を設定しています.
AddKeysToAgent yes
は,最初に秘密鍵を使ったときにSSH Agentにも追加されるようにするものです.
以下,ssh_config(5) — Linux manual pageより抜粋.
AddKeysToAgent
Specifies whether keys should be automatically added to a running ssh-agent(1). If this option is set to yes and a key is loaded from a file, the key and its passphrase are added to the agent with the default lifetime, as if by ssh-add(1).