sshを使いこなすための7つの設定

 五月病が抜け切らないIT系新入社員に贈るシリーズ第1段。
 ~/.ssh/configにはいろいろな設定が書けるが、周囲を見渡した限り、あまり活用されているようには見受けられない。そこで、今回は便利な設定をいくつか集めてみた。

長いホスト名に短い名前をつける

Host exp1
     HostName verrrryyy.looooong.hostname.example.jp

 ssh verrrryyy.looooong.hostname.example.jpの代わりにssh exp1でログインできるようになる。
 ちなみに、zshの場合、configファイルに登録されたホスト名はsshコマンドを打つときに補完されるので更に便利。

特定のホストへログインするときのユーザ名や鍵をカスタマイズする

Host github.com
     User tkng
     IdentityFile ~/.ssh/id_rsa2

 githubに登録してある鍵は普段使う奴と違うんだよね、みたいな場合に使う。
 ここまでくると大体想像はつくだろうが、ポート番号などもカスタマイズできる。

放置してても切断されないようにする

 10分ぐらい通信をしていないと、ルーターが勝手に接続を切ってしまったりするので、パケットを送って接続を維持する。

ServerAliveInterval 60

 Debian系のOSだと独自のパッチが当たっていてProtocolKeepAlivesという設定ができたのだが、ServerAliveIntervalの方がどこでも使えて汎用性が高いようだ。何時頃からServerAliveIntervalなんて設定が増えたんだろう…。

コネクションを複数のターミナルで使いまわす

Host *
ControlMaster auto
ControlPath   /tmp/%r@%h:%p

 同一ホストに複数のターミナルから接続する場合、1本のコネクションを使い回してくれる。特にパスワードログインしかできない場合など、2回目以降はパスワードを打たなくて良いので便利。

時間のかかる認証方法を無効化する

Host example1
        GSSAPIAuthentication no

 公開鍵認証の前にGSSAPI認証とかいうのを試すせいでログインにやたら時間がかかる…みたいな場合にこの設定を行うと、さっさと公開鍵認証をしてくれるようになってつながるまでの時間が短くなる。

多段ログインの設定

 前に書いたのでそちらを参照。
 ProxyCommandを使う。理論上は無限に多段ログインができる。

SOCKSプロキシ機能を提供する

 Dynamic Port Fowardを使って、特定ホストへのアクセス(ポートで識別するんじゃなく、ホスト名で識別するところがポイント)だけをsshのトンネル経由でアクセスさせることができる。これも前に書いた。前に書いたときにはGoogle Chromeは対応してなかったけど、もう今では完璧に対応している。
 Web APIを開発している時とか、ブラウザからちょいとテストできるとすごい便利。

まとめ

 sshは便利なものというよりはなくてはならない仕事の必需品みたいなものであるが、「つながりゃいいや」という感じで、重要度の割にあまり顧みられていないような気がしている。毎日使うものだからこそ、ちょっとした面倒を設定で回避できるのであれば、ぜひ回避しておきたいものである。
 Windows使ってる人はよくわからないのでごめんなさいね。