http/httpsしか利用できない環境下でsshが使えるようにしてみる
世の中には、何らかの事情でhttp/httpsしか利用できないようにファイアウォールで制限しているネットワークが存在します。このような環境下でsshを使いたい場合、stoneなどを利用してトンネリングを行うことで制限を回避できる場合があります。
stoneとは
stoneはアプリケーションレベルのTCP&UDPリピータです。任意のプロトコルの通信をhttpsの中に通すことで、プロトコル制限を回避できます。
サーバの設定
Debian/UbuntuなどのOSにはパッケージが用意されているので、それを利用します。
インストールが完了したら、daemontoolsで動作させるように設定を行います。
run
443番ポートにSSLで暗号化された状態で送られてきたパケットを復号して22番ポートに流すように設定します。
クライアントの設定
ここでは、クライアントにWindowsを利用すると想定して説明します。Debian/Ubuntuなどの場合は、サーバと同様にパッケージが存在するだけインストールできます。
Windows版のstoneは以下のWebサイトからダウンロードできます。Vista以降に対応するバージョンは無いようですが、手元のWindows 7ではXP向けのものが動作しているので試してみる価値はあると思います。 Simple Repeater `stone’ プログラムを適当なディレクトリに配置したら、以下のようなコマンドでstoneを起動します。
この設定では、まず10000番ポートへのパケットをSSLで暗号化して10443番ポートに流し、10443番ポートに流れてきたパケットをproxy経由でserverの443番ポートに飛ばすようにしています。
あとはsshクライアントでlocalhost:10000に接続すれば、httpsの中にsshを通す形でサーバに接続できるはずです。
ただ、このままだとどこからでもアクセス可能になってしまうため、サーバ側の設定を変更して指定したホストからの接続のみ許可するようにしておきましょう。