はじめに

    一橋大学は大学メールとしてgmailを導入しているのですが、中国ではgoogle等のサービスが規制されているため、中国出張のときには現地のネットからメールを確認することができません。それでは困ってしまうので、SSHポートフォワーディングで日本国内のサーバーを経由してネットに接続しました。ここではその方法を説明します。
    ただ、今回説明する方法は、使いようによっては様々なセキュリティー制限を無効化することができますので、くれぐれも、よこしまな目的には使用しないでください。

方法

    中国のネット規制を突破する方法としては、香港のデータSIMを使う、VPNサービスを使う、VNCで日本に置いてあるPCを遠隔操作する、プロキシを通す、等の方法が考えられますが、香港のSIMは毎回入手するのが面倒、VPNはプロトコルごと規制されるとどうしようもない、VNCは速度の点でいまいち、プロキシを立てると不正アクセスが心配、等の問題があります。
    そこで今回はSSHを利用しました。SSHは非常に汎用性のあるプロトコルですので、プロトコル自体が規制される可能性は非常に低いですし、そもそも自分で管理するサーバーがある時点でSSHでログインできる筈ですので、手軽に実現できるという利点があります。応用として、逆に外部からイントラネット内のSSHサーバーに接続して内部向けページにアクセスすることなどもできます。
    具体的な方法としては、クライアント側(つまりパソコン)にSOCKSプロキシを構築して、ダイナミックポートフォワーディングでSSHサーバーに接続します。クライアントとサーバーの間の通信は暗号化されますので、公共Wifiなどのセキュリティーに不安のある環境からアクセスする際にも利用することができます。

サーバー側の準備

    SSHログインのできるサーバーが必要です。SSHサーバーは攻撃を受けやすいので公開鍵認証をお勧めします。ポート番号は標準で22ですが、攻撃を避けるため、変更するのが無難でしょう。ここではポート番号は仮に12345としておきます。
    SSHサーバーでは、TCPフォワーディングを許可しておきます。具体的には /etc/ssh/sshd_config で“AllowTcpForwarding yes”としておきます(デフォルトでyesになっています)。

クライアント側の準備

    コンソールベースで接続してもよいのですが、コマンドの打ち込みや再接続などが面倒ですので、ソフトを使うのが簡単です。ここでは“Bitvise SSH Client(Tunnelier)”というフリーソフトを使います。これはWindows版のみでMac版はありません。ただ、Macでも似たようなソフトはあると思います。
    Bitvise SSH Client(Tunnelier)をインストールしたら、設定を行います。
    Loginタブを開き、Serverの欄のHostにSSHサーバーのIPアドレス、PortにSSHのポート番号を入力します。また、Authenticationの欄にSSHサーバーへのログイン情報を入力します。
    Optionsタブの、On Loginの欄のチェックを全て外します。
    Servicesタブの、SOCKS/HTTP Proxy Forwardingの欄のEnabledにチェックを入れ、Listen interfaceにローカルホストのIPである 127.0.0.1 を入れ、Listen portにSOCKSプロキシのポート番号を入れます。これはパソコン内で使われるポート番号なので何でもよいのですが、ここでは 1080 としておきます。
    上の操作が全て終わったら、Loginボタンを押して接続します。エラーが出ず、ちゃんと接続されれば、準備は完了です。

ブラウザの設定

    ブラウザからは、ネットに直接アクセスするのではなく、パソコン内に構築したSOCKSプロキシを通してアクセスするように設定します。
    Firefoxの場合、「ツール」→「オプション」→「詳細」→「ネットワーク」→「接続設定」とメニューをたどり、「手動でプロキシを設定する」にチェックを入れ、SOCKSホストに localhost、ポートにBitvise SSH Clientで設定したポート番号(ここでは1080)を入力します。このとき、SOCKSホスト以外のプロキシの欄は必ず空白にしておいて下さい。
    また、DNSにもSSHを通じてアクセスするように、SOCKS v5を選択し「リモートDNS」にチェックを入れておきます。about:config で、network.proxy.socks_version を 5 に、network.proxy.socks_remote_dns を true にしても設定できます。
    これで、SSHサーバーを経由してネットに接続できる筈です。念のため、ウェブサーバーにアクセスする際のIPアドレスがSSHサーバーのアドレスになっているか確認しておきましょう。