« TextMateの設定メモ | メイン | PHP版 Parallel::Prefork で奥一穂さんと親に感謝しよう »

快適なsshクライアント生活
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

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

を参照ください。

ウノウでは特に最近、積極的にエンジニアを採用しています。
採用ページをご覧になり興味のある方、ぜひご応募ください。
Find Job!でも募集してます!

トラックバック

このエントリーのトラックバックURL:
http://www.unoh.net/mt32/mt-tb.cgi/1771

コメント

EnableSSHKeysign って global な設定ファイル(ex. /etc/ssh/ssh_config)でのみ有効じゃないですか?

そのとおりです。ご指摘ありがとうございます。記事を修正しました。
> Setting this option to “yes” in the global client configuration file /etc/ssh/ssh_config

別件ですがncコマンドにタイムアウトを設定していなかったため踏み台サーバへプロセスが残る可能性がありました。この件についても修正しました。

scpでも出来る?

> akipon
scpでもHostに設定した名前で利用できるようになります。

FYI: OpenSSH 5.4 から netcat 相当の機能が含まれたので、ssh だけで完結できそうです

コメントを投稿


画像の中に見える文字を入力してください。

  [PR] 転職
ウノウラボはウノウ株式会社のエンジニア/デザイナーによる大小のアウトプットを行っていく場です。

現在ウノウは絶賛人材募集中です。詳細は求人ページへ。

About

2010年3月12日 19:00に投稿されたエントリーのページです。

ひとつ前の投稿は「TextMateの設定メモ」です。

次の投稿は「PHP版 Parallel::Prefork で奥一穂さんと親に感謝しよう」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

ウノウサービス