systemd-tty-ask-password-agentの使い方
TL;DR
Please enter password with the systemd-tty-ask-password-agent tool!
と言われたら、別のパネルなりウィンドウなり開いて、systemd-tty-ask-password-agent --query
を実行すれば良い。
systemd-tty-ask-password-agentの使い方
Arch LinuxはSystemdを採用してて、Systemdを使ってOpenVPNとかでVPN接続するときに以下のようなメッセージが表示されることがある。
$ systemctl start openvpn@client Password entry required for 'Enter Private Key Password:' (PID 6145). Please enter password with the systemd-tty-ask-password-agent tool!
メッセージにはsystemd-tty-ask-password-agent
を使ってパスワードを入れてねと書いてあるわけだけど、ノリでそのままパスワード入力するとパスワードがまんま表示され、タイムアウトの後に次のインプットとして入力され、実行される。
どうやってパスワードを入力すんだぜ?と思ってたら見つけた。
issue with Vpn HideMyAss / Newbie Corner / Arch Linux Forums
別のターミナル開いて実行するといいよとのこと。
$ sudo systemd-tty-ask-password-agent --query [sudo] password for terut: Enter Private Key Password: ****************
入力するとこんな感じでパスフレーズが聞かれて、接続が確立した。
ちなみにもっとよいやり方がないかとドキュメントを見てみたけど、systemd-tty-ask-password-agent
はこういった使い方をするものっぽい。
Ubuntu Manpage: systemd-tty-ask-password-agent - List or process pending systemd
プロセスを見ていると/usr/bin/systemd-tty-ask-password-agent --wall
というのがあったんで、こいつがフォワードしてメッセージを出してるってことなのかな。
あとOpenVPNには--askpass [file]
ってコマンドライン引数があってファイルにパスワードを書いてもよさそうだったけど、嫌だったので却下した。
ちなみにOpenVPNのSystemdのUnitはリスト表示するとopenvpn@.service
ってなってるんだけど、これはUnitファイルの中で引数を受け取るためで、起動はリストで表示されたものではなく、@のあとに引数を与えて起動することになる。
# systemctl start openvpn@[設定ファイル名]のような感じで、もしclient.confを読むなら $ systemctl start openvpn@client