なんらかしらの事情でサーバに個人ユーザを作れず、複数人でひとつのSSHを共有して使う場面があります。個人ユーザを作ることが許される環境であれば、自分のアカウントに.bashrcを置いて自分用のカスタマイズをできます。しかし、共有アカウントの場合は他の人もログインすることを考えて.bashrcを書き換えられなかったりします。
こうしたケースでも自分用の.bashrcを使える方法があります。
ログインした後にsource
するオーソドックスな方法
まず、個人的な.bashrcは他の人の迷惑にならなそうなところに置きます。
たとえば、~/company03/suin/.bashrc
といった自分用のフォルダに置くとします。
ログインした後にsource
するオーソドックスな方法では、最低でも次のような2ステップになります。
# 目的のサーバにログインする
$ ssh company03@example.com
# ログイン後に個人的な.bashrcを読み込む
[company03@websvr ~]$ source ~/company03/suin/.bashrc
この方法だとSSHするたびにsource
コマンドを実行しなければならず、頻繁にログインするサーバではとても面倒です。
~/.ssh/authorized_keysを細工する方法
~/.ssh/authorized_keysを細工すると、オーソドックスな方法ではどうしても必要になってしまう2ステップ目を省くことができます。
~/.ssh/authorized_keysはログインを許可する公開鍵を列挙するファイルですが、カギ情報の他にもオプションを書くことができます。そのオプションのひとつにcommand
オプションがあります。このオプションは特定の鍵でログインしたとき、自動的にそのコマンドを実行し、その処理が終わったらSSH接続を切断する設定です。
たとえば、次のようにcommand
オプションにls
をセットしておくと、SSHでログインしたら自動的にls
を実行し切断されます。
...他の人の公開鍵...
command="ls" ssh-rsa AAAA…(公開鍵中略)…Kbm1 suin@suin.local
これを応用して、command
にbash --rcfile ~/company03/suin/.bashrc
をセットしておきます。bash
コマンドは自分でexitしない限り処理が続いていくので勝手に切断されることはありません。自分のbashrcを読み込ませるために、bash
コマンドには--rcfile
オプションを渡します。当然ですが、SSH公開鍵は自分個人のものを~/.ssh/authorized_keys
に書くようにしてください。
...他の人の公開鍵...
command="bash --rcfile ~/company03/suin/.bashrc" ssh-rsa AAAA…(公開鍵中略)…Kbm1 suin@suin.local
このようにしておくと、共有のSSHアカウントでもssh
コマンド一発で、自分がログインしたときだけ自分の個人的な.bashrcを自動的に読み込んでくれるようになります。
なお、command
オプションを設定するときは、設定に失敗してSSHできなくなることも想定して、別窓で予備のSSH接続を維持しておくことをオススメします。