いうことで、ファイアウォールを超えるときになかなか便利なツールです。組織によっては外部のサーバにはポート80番(HTTP)または443(HTTPS)にしか接続を許していないところもあると思いますが、「自宅のファイルをネット越しにダウンロードしたい」などを実現するためのツールです。Windows版はバイナリ(98/NT/2000/XP)が提供されています。Linux環境では自分でビルドするかディストリビューションに収録されているものを使います。5.0ではaptでインストールすることができました。stoneの設定サーバ側とクライアント側で設定が必要ですが、それほど難しくはありません。サーバ側(通常自宅サーバになると思います)ではデーモンとして起動しておきます。2.3eを使用しています。443/sslこんな感じ。443/sslではポート443(HTTPS)で待ち受けておいて22(SSH)に転送する設定になります。/sslオプションを付けているので経路はSSLによる暗号化が行われます。RPMパッケージなどでインストールすると/etc/init.dに起動スクリプトが追加されるのでchkconfigで起動スクリプトをONにすれば使用可能になります。設定ファイルを読み込む場合はcppが必要になるようです。foundエラーが出るので注意!クライアント側Windowsの場合はポート22を使ってもいいと思いますが、Linuxで使う場合は22以外になるでしょう。SSLで転送する場合は以下のようになります。10443ここのmyserverは転送先のサーバアドレスです。面倒なのですが無駄にリソースを使わないように使用するときのみ接続しています。Forwardingを使うことでファイアウォールを超えつつ任意のポートに接続するということが可能になります。|<--ここでポート転送-->|こんな感じだと思います。Linuxの場合は通常のsshコマンド、Windowsの場合はPortForwarderあたりを使うのが簡単でよさそうです。Linuxの場合手順はこんな感じ。nobrin@localhostこの段階でローカルの8080に接続すると自宅ネットワークの192.168.0.1:80に接続される。sshの-Lオプションはローカルポート(待受ポート):転送先アドレス:転送先ポートという書式です。転送先アドレスは接続先のサーバから見たアドレスなので注意して下さい。転送を利用する例えばFirefoxなどでhttp://localhost:8080/に接続すると自宅ネットワークのhttp://192.168.0.1/に接続される。自宅ネットワーク変な書き方ですがイメージとしてはこんな感じでしょうか。Windows環境での転送Windows環境になってしまうのでLinuxで遊ぼう!とは少し趣旨がずれてしまうのですが、stoneの扱いと言うことでここにメモしておきます。stoneとSSHでポート転送ができることは解説しましたが、ここではファイアウォール越しにWindowsファイル共有を使用するために、Windows環境のSMB接続(Windowsファイル共有)をStoneとSSH経由で転送してみます。Stoneって感じでしょうかLinux環境だと前述のSSH転送で割と簡単に実現できると思うのですが、Windows環境で実現するためにはループバックデバイスを使用するようです。参考:http://kaede.blog.abk.nu/0213ループバックデバイスの作成SMB接続で使用するポート139は既に使われているので新たにループバックデバイスを作成して、ループバック経由で転送するようにします。以上でループバックデバイスが作成できました。不要になって削除するときはデバイスマネージャから行います。Forwardingと同様です。ここではループバックデバイスのIPアドレスを169.254.0.1に設定したとします。yes例えばconfig.txtにこのように記述してPortForwarderでMyHomeに接続するとポート転送が行われます。[ファイル名を指定して実行]で\\169.254.0.1を入力すると接続できるはずです。以上のようにstoneを使えば、ファイアウォールに穴を開けることができますが、反面大きなキケンを伴います。そこでSSLクライアント認証を行うことで証明書がない場合にはアクセスできないようにします。以上のファイルがそろっていれば可能なようです。443/sslこのような感じになります。グレーで示したオプションは状況に応じて入れて下さい。初めに作成したstone.pemを使用する場合、秘密鍵および証明書(署名済み公開鍵)を指定して下さい。5.2の場合、/usr/share/ssl/certs/stone.pemがディフォルトで使われるため、そのstone.pemを使う場合は指定する必要はありません。プライベート認証局の証明書はプライベート認証局を作成した際に作成される証明書になります。青で示したre0、re1はそれぞれ証明書のDepthに対する正規表現であり、ざっくり説明するなら自分自身がDepth=0、署名した認証局がDepth=1、さらにそれに署名した認証局がDepth=2...というようになるみたいです。以上のようにサーバを設定されているとき、接続の際には証明書を提出しなければなりません。それらの指定は-qオプションで行うことができます。10022このように個人の秘密鍵であるmykey.pemおよび証明書mycert.pemを指定します。