SSH 接続した先でもお気に入りのエイリアス設定とかを使いたい!「sshrc」のススメ
ssh
コマンドで SSH 接続した先のサーバで、いつもローカル環境で使っているエイリアスや関数が使いたくなることは多々あるだろう。そんな時、接続先のサーバに毎回 .bashrc
を scp
でアップロードするのは面倒だし、Dotfiles を GitHub 等からダウンロードしてきて設定したりするのも面倒だ。
そこで今回紹介するのは、sshrc
というコマンドツール。コレをインストールすると、SSH 接続先に設定ファイルを持ち込んで、その設定ファイルを source
してからプロンプトを起動する、ということが実現できるようになる。
目次
インストール方法
sshrc
コマンドは、Mac の場合、Homebrew でインストールできる。
$ brew install sshrc
使い方
sshrc
コマンドの基本的な使い方は ssh
コマンドと同じ。-i
オプションで SSH 鍵を指定したり、-p
オプションでポートを指定したり、といったオプションも、裏側では全て ssh
コマンドに横流しされている。
# こんな風に `ssh` コマンドと同じように使える
$ sshrc -i ~/.ssh/id_rsa -p 22 myuser@myserver.com
この時、接続先に持ち込まれる設定ファイルは、~/.sshrc
というファイルを用意しておく必要がある。このファイルが置かれていないとコマンド実行時にエラーになる。
~/.sshrc
に記述した内容は SSH 接続後に実行されるので、例えばローカル端末内の ~/.bashrc
を読み込んで利用したい、と思って
# ~/.sshrc
source ~/.bashrc
こんな風に書いても上手くいかないので注意。このように書くと、SSH 接続先のサーバ内にある ~/.bashrc
が読み込まれてしまうためだ。
仕方がないので、~/.sshrc
の中に直接必要なエイリアスなどを書いておこう。ファイル全体が 64KB を超えるとアップロードしてもらえないので、あまり大量に書かないよう注意。
一例だが、僕はこんな ~/.sshrc
を作った。
# ~/.sshrc
# Alias
alias quit='exit'
alias cls='reset'
# Function
function mkcd() {
mkdir $* && \cd $_ && ls
}
# ls
alias la='ls -a'
alias ll='ls -l'
alias lal='ls -la'
alias lla='ls -la'
alias la1='ls -a -1'
alias ls1='ls -1'
# cd
alias ..='cdd ..'
alias ...='cdd ../..'
alias -- -='cd - && ls'
alias -- --='cd - && ls'
# grep
alias grep='grep --color'
alias grepinr='grep -inR'
コレでチョットベンリになった。
sshrc
の中身はシェルスクリプトなので、コードリーディングしてみても面白いだろう。