OpenSSH公開鍵の制限設定
OpenSSHサーバに公開鍵認証でログインしたユーザができることを制限したい場合、authorized_keys の公開鍵にオプションを書き連ねる。
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="..." ssh-rsa ...
これらのうち no-* は、restrict オプションひとつで置き換えることができる。
restrict,command="..." ssh-rsa ...
より正確には、restrict は以下の設定と等価になる。
no-port-forwardingno-agent-forwardingno-X11-forwardingno-ptyno-user-rc
さらに将来同様のオプションが新設された場合も restrict でカバーされることが期待できる。
必要なオプションがあれば一部を明示的に有効化することもできるので、restrict をベースに設定するのがいい。
詳しくはsshd(8)や、ソースコードの auth-options.c を参照。
自分の中では新発見だったのだけど、restrict オプション自体はにリリースされたOpenSSH 7.2(リリースノート)で新設されたもので、まったくもって目新しいものではない。
Gitのpull/pushにしか使わない公開鍵を持っていて、できることを制限しようと思い立った。
git-shell を使えばいいことはすぐにわかったのだけど、他にどんなオプションがあったかと調べていたらたまたま見つけた。