unoh.github.com

快適なsshクライアント生活

Fri Mar 12 02:00:00 -0800 2010

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

を参照ください。