お客さんのサーバにリモート接続するために、我が家の PC(固定IPで「入口のサーバ」の IPフィルタリングで「接続許可」されている)から putty で「入口のサーバ」をトンネリングして「奥のサーバ」につないでる。 putty で KeepAlive の設定をしているので繋ぎっぱなしで作業している。
しかし、横川の仕事場からは WiFi サービスでインターネットにつないでいるので固定IPではなく「入口のサーバ」の IPフィルタリングを超えられない。
そこで、まず自社のサーバに putty で接続して(固定IPで、「入口のサーバ」の IPフィルタリングで「接続許可」されているサーバ)、そこからお客さんの「入口のサーバ」に ssh 接続。そして「入口のサーバ」から更に ssh で「奥のサーバ」に接続・・・としている。
そしたら、ssh 接続でボロボロタイムアウトするのよ。自宅では常に「奥のサーバ」にも putty で接続していたので、ssh の接続でこれほどタイムアウトするとは知らんかった(^^;
ということで、ssh 接続で KeepAlive するようにしようと思ったんだけどググると「KeepAlive の設定を ~/.ssh/config ファイルに書け」って情報が多い。でも、うちのサーバでもお客さんのサーバでも、全然 config ファイルを読み込まない。もちろん 600 の権限にしてるけどね。
psql で DB に接続して、ちょっとややこしい SQL を考えてると数分でタイムアウト。またうちのサーバから「入口のサーバ」に接続するところからやり直し・・・仕事にならん(^^;;;
そこで、
ssh -o ServerAliveInterval=60 -l hogehoge exsample.com
という具合にコマンドラインで指定したらバッチリ。何時間何もせずにほっておいても ssh のセッションは切れない。
毎回入力するのは面倒くさいので、自社サーバと「入口のサーバ」の .bashrc に
alias ssh='ssh -o ServerAliveInterval=60'
という alias を書いておいた。これで、いつものように ssh -l hogehoge exsample.com で OK。