Skip to content

systemdのユニットでsshuttleをするとパスフレーズを読み取れなくて起動しない

systemd-ask-passwordSSH_ASKPASS と組み合わせて使えば動いた。ssh-agent が動作していればパスフレーズの入力を促されるのは最初の1回だけとなるので副作用なく利用できる。

Environment=SSH_ASKPASS=systemd-ask-password

このとき —user オプションを付けようとすると、SSH_ASKPASS は引数を解釈してくれないようでエラーになった。また、手元の端末で確認する場合、sshtty を読めるのでSSH_ASKPASS_REQUIRE が無ければ SSH_ASKPASS を参照しない。

Terminal window
$ export SSH_ASKPASS_REQUIRE=prefer
$ export SSH_ASKPASS="systemd-ask-password --user"
$ ssh -T git@github.com
ssh_askpass: exec(systemd-ask-password --user): No such file or directory

パスフレーズが必要な場面でユニットの実行が停止するので、入力する側は systemd-tty-ask-password-agent を使って接続する。

Terminal window
systemd-tty-ask-password-agent --query