いや、まぁ、タイトルどおりです(^^ゞ 実験です。興味本位です。(^^;;;
社内のテストサーバーに自宅から、好きなときに、どうにかしてSSH接続できないものか・・・?とてもじゃないけど、「VPN設置して家からアクセスさせてください」とか、「ルータのポート一個開けて、俺っちのテストサーバーへルーティングして」とか、そんな都合のいいことが通る(許可される)はずもありません(^^;;;
幸いなことに、テストサーバーはCentOS6で、社内の資産管理システムからは除外されている。というか、社内のIT管理部門にLinuxを扱えるシステム精通者はいません(笑) プロバイダー業も一時期やってたから数年前にはそれなりに詳しい人がいたかもしれませんが、経営方針とやらが変わってからそういう人たちは殆どいなくなった。会社から技術が無くなるって、ほんとあっけないですね。
ってなわけで・・・・?
サーバー・ネットワークの素人なりに考えた結果、やはりポート転送を使うしか方法がないかなと。ただ、家にあるPCはブロードバンドルーター(もはや死語か?)の内側のLANに繋がっているので、単純にSSHポート転送すればいい話ではないのは、自明です。
素人なりに考えたあげく、下記のように、現在契約しているVPSサーバーを中継してSSHポート転送を行えば、やりたいことは可能なはず・・・
まず、社内のテストサーバーから中継サーバーに逆ポート転送をかけます。下記のような感じでしょうか。
>> ssh -N -R 10022:localhost:22 user@xxx.xxx.xxx.xxx
これで、中継サーバーの10022番へアクセスしたら社内の22番ポート(SSHD)にアクセスできるようになった。ただ、これだと、社内のテストサーバーにログインするためには、いちいち中継サーバーにログインして、そこから、またsshでログインして・・・という風になるので、もう一つ、家のPCから中継サーバへポート転送してしまおう、というのが今回の実験の目的。
中継サーバーへポート転送するには、こんな感じ?
>> ssh -N -L 22:localhost:10022 user@xxx.xxx.xxx.xxx
理屈はあってると思うんだけど、これで家のPCのローカルポート22番へsshで接続すると、中継サーバーの10022番ポートへ接続され、さらに中継サーバーの10022番ポートは、社内のテストサーバーの22番ポートへ転送される。
別にこんなことしなくても、多段SSHすりゃいいじゃん、ってな声も聞こえますけど、SSHじゃなくて、たとえば社内のテストサーバーにFTP接続したい、ってな時だと、やっぱり中継サーバーへのポート転送を行わないとセキュリティ的にねぇ・・・。
(※実際には中継サーバーへの接続には鍵認証を使い、家のPC(Windows7)からはPortForwarderを使用して接続しています。)
どこかに穴を開ける(ポートを開ける)リスクを最小限に抑えつつ、その場しのぎの方法としてSSHポート転送はついつい銀の弾丸に思えてきます(^^;;;
ちなみに、一度試みようと、家に帰ってきて繋げてみたところ、接続できませんでした。テストサーバーでKeepAliveの設定をし忘れてしまって・・・接続が切れてしまってたとさ。トホホ。
追記:
後日 ~/.ssh/config ファイルにServerAliveInterval を設定して、完了。快適です。SSHポートだけじゃなく、FTP/HTTPポートも転送することでやりかけの仕事を家でできるようになった(^.^)
なんかの加減で社内テストサーバーから中継サーバーへの接続が切れてしまうと一切接続できなくなるのは困りもの。autosshを使えばいい、というブログ記事が多いけど・・・鍵認証にパスフレーズを入力するようにしてあるので、ちょっと無理かな。現状、切れたら終了~。