2010/03/13 一部記事修正。
はじめまして、HIROKIです。
大規模コンテンツの開発に携わっていると数多くのサーバにsshでログインすることになります。その手間を軽減するために $HOME/.ssh/config を設定してみます。
sshコマンドを簡略化
例えば dev01.labs.unoh.netというサーバにsshでログインするのであれば、$ ssh -i ~/.ssh/id_rsa.unoh hiroki@dev01.labs.unoh.net
という感じのコマンドでログインしているかと思います。
これを
$ ssh dev01でログインできるように設定してみましょう。
Host dev01
User hiroki
HostName dev01.labs.unoh.net
IdentityFile ~/.ssh/id_rsa.unoh
秘密鍵を複数使いわけている人はIdentityFileを指定すると便利です。
さらにホストを追加
さらにホストを追加してみます。Host dev01 User hiroki HostName dev01.labs.unoh.net IdentityFile ~/.ssh/id_rsa.unoh Host home User hirocaster HostName home.hiroki.jp IdentityFile ~/.ssh/id_rsa.homeいままで
$ ssh -i ~/.ssh/id_rsa.home hirocaster@home.hiroki.jpでログインしていたのが
$ ssh homeでログインできるようになりました。
各ホストの共通設定
すべてのホストの共通設定は以下のような感じ
Host * IdentityFile ~/.ssh/id_rsa ForwardAgent yes TCPKeepAlive yes ServerAliveInterval 15 ServerAliveCountMax 3
必ず設定ファイルの最後に追加するようにしてください。
踏み台を経由してログインする場合
応用編として、踏み台サーバ(op.labs.unoh.net)を経由して 開発サーバ(dev01.labs.unoh.net)にログインする場合
Host dev* User hiroki IdentityFile ~/.ssh/id_rsa.unoh ProxyCommand ssh op.labs.unoh.net nc -w 6000 %h %p
踏み台サーバ(op.labs.unoh.net)の/etc/hostsにdev01,dev02などを追加しておくことがポイントです。
このようにしておけば、踏み台サーバを経由して開発サーバに入れます。
$ ssh dev01にもログインできますが、
$ ssh dev02にもログインできるようになります。
このようにワイルドカードを利用した設定もできます。
最終的な$HOME/.ssh/config
Host dev* User hiroki HostName dev.01.labs.unoh.net IdentityFile ~/.ssh/id_rsa.unoh ProxyCommand ssh op.labs.unoh.net nc -w 6000 %h %p Host home User hirocaster HostName home.hiroki.jp IdentityFile ~/.ssh/id_rsa.home Host * IdentityFile ~/.ssh/id_rsa ForwardAgent yes TCPKeepAlive yes ServerAliveInterval 15 ServerAliveCountMax 3
以上でsshコマンドを利用してのログインが簡略化されました。
最後に
簡単にログインできるようになったからこそ、本番サーバとテストサーバを間違ってオペレーションしないようにログインした際にはサーバを確認する癖をつけてください。
$HOME/.ssh/configに関するその他の設定は
$ man ssh_config
を参照ください。