sshrcで環境を汚さずにサーバ上の .bashrc .vimrc 等をカスタマイズ

複数人で管理している本番サーバの環境をオレオレカスタマイズしてる人はいないと思うが、デフォルトのままだと使いにくいので、ぎりぎり許せる最大公約数的な設定をしているという管理者は多いのではないだろうか。
それでも、tmux や screen のプリフィックスは人によって通常使っているキーが違ったりして、これが異なるだけで非常に使いにくかったりする。自分はログインする度に以下のようなコマンドを打ちこんでいた。実に面倒くさい。

$ tmux set-option -g prefix C-t

この件についてtwitterで聞いてみたところ、皆さんサーバ上に個人用の設定ファイルを用意して、ログイン時にそれを読み込んだりしているようだった。

複数人で管理してるサーバの tmux.conf / .screenrc を個人用にカスタマイズすべきじゃないと思うんだけど、デフォルトのままだと使いにくい。みんなどうしてるんだろう?

で、これを何とかしようと思って少し調べてみた結果、以下の sshrc を使うのが便利という結論に至った。

https://github.com/Russell91/sshrc

特徴としては、

  • sshログイン時に毎回流し込むので環境を汚さない
  • いちいちサーバに設定ファイルをコピーする必要がないので、管理するサーバの台数が多くても安心
  • ローカルの設定ファイルだけメンテナンスしておけば、常に同じ環境で作業ができる
  • サーバ上の .bashrc も今まで通り読み込まれる

 

Macの場合は、Homebrewからインストールできる。

$ brew install sshrc

次に設定ファイルを用意する。

~/.sshrc
tmux() {
  local TMUXDIR=/tmp/.yamashita-tmux
  if ! [ -d $TMUXDIR ]; then
    rm -rf $TMUXDIR
    mkdir -p $TMUXDIR
  fi
  rm -rf $TMUXDIR/.sshrc.d
  cp -r $SSHHOME/.sshrc $SSHHOME/bashsshrc $SSHHOME/sshrc $SSHHOME/.sshrc.d $TMUXDIR
  SSHHOME=$TMUXDIR SHELL=$TMUXDIR/bashsshrc `which tmux` -f $SSHHOME/.sshrc.d/.tmux.conf -S $TMUXDIR/tmuxserver $@
}

export VIMINIT="let \$MYVIMRC='$SSHHOME/.sshrc.d/.vimrc' | source \$MYVIMRC"
export SHELL=`which bash`

# alias etc... as you like
alias ll='ls -l'
alias la='ls -A'

tmux関数は re-attach するためのおまじないで、これを利用することで他の人とセッションを共有しなくなる。

次に ~/.sshrc.d/ というディレクトリを作って、.tmux.conf や .vimrc を置けば設定は完了。また、ローカルでzshを使っている人は「compdef sshrc=ssh」を追加しておくと補完が効いて幸せになれる。

.sshrc
.sshrc.d/
 ├── .tmux.conf
 └── .vimrc

それでは、早速サーバに接続してみよう。普段使っている ssh コマンドの代わりに sshrc コマンドを使う。中身はシェルスクリプトで書かれたsshのラッパーなので、オプション等はそのまま利用できる。

$ sshrc username@servername
$ la
.bash_history  .bash_logout  .bash_profile  .bashrc  .ssh
$ tmux

自分の .tmux.conf が反映され、使い慣れた環境が再現されているはず。うん便利。

次に通常のsshでログインしてみると、

$ ssh username@servername
$ la
-bash: la: コマンドが見つかりません
$ ls -A
.bash_history  .bash_logout  .bash_profile  .bashrc  .ssh

当然 alias は設定されておらず、余計なファイルも全く作られていない。

ひとつ注意点としては、バリバリにカスタマイズせずに最低限にしておいたほうがよいということ。特にtmux-powerlineなどで魔改造しているような人は、サーバ管理用の専用設定を用意したほうがよい。ログイン時にファイルを転送する必要があるので、作者の方も64KB以下を推奨している。



このエントリーのはてなブックマーク (-)