理工系研究者のための Mac OS X, Windows, Linux メモ
 
ホーム >> UNIX >> stone
このエントリーをはてなブックマークに追加

stone

  1. インストール
  2. 443番ポート(https用)しか通さないproxyを越えて外部のsshサーバーと通信
  3. sshの接続を維持する
  4. Mac OS X の起動時にstoneをサーバーとして起動する

インストール

環境:Vine Linux 3.0

Mac OS X 上でmakeする場合は、

$ make macosx-ssl
とする。

Vine Linux 3.0でstoneをコンパイルするにはあらかじめOpenSSLをインストールしておく必要がある。 OpenSSLのソースはOpenSSLのウエブサイトで取得できる。 現時点の最新版は openssl-0.9.7d.tar.gz だった。 ソースを取得したら,次のように展開してconfig, makeを実行する。

$ ./config
$ make
# make install

次に Stoneのウエブサイトから最新のソースファイル stone-2.2c.tar.gz を取得する。 もしくはこちらのウエブサイトに書かれているように、CVSサーバーから取得することもできる。

ソースを展開して、makeする。このとき,プラットホームを指定する。

$ make linux-ssl
SSL対応にする事で通信を https の通信のように偽装する事が出来るようになる。 作成された実行ファイル stone を実行パスの通っているディレクトリ(例えば /usr/local/bin)にコピーする。

server側で,stoneをssl暗号化を有効にして立ち上げてみると /path/to/certs/stone.pemが無いというエラーが出ることがある。 この場合は、ここのウエブサイトに書かれているように

# cd /path/to/certs
# make stone.pem
として stone.pem を生成すると起動できるようになる。 server側がMac OS Xの場合は上記サイトに書かれているファイルの位置と異なっているが locateコマンドなどで探して設定する。

443番ポート(https用)しか通さないproxyを越えて外部のsshサーバーと通信

ファイアーウォールの外にあるサーバー側でstoneを次のようにして立ち上げる。rootユーザーで起動する必要がある。

# stone localhost:22 443/ssl
これで待ち受け状態になる。sshdが起動していることも確認しておく。

次にクライアント側から次のように stone を起動する。

$ stone localhost:10443/ssl 10022 -- proxy:8080/http 10443 "CONNECT server:443 HTTP/1.0"

そして,クライアント側の10022番ポートにsshを接続する。

$ ssh -p 10022 localhost

▼参考サイト or 参考文献

sshの接続を維持する

sshでリモートログインした場合、通信経路にNAT機能を持つルーターが入っていると、通信していない間に接続が切れてしまう事がある。 これを防ぐには、定期的にクライアント側から信号を送るとよい。 クライアント側のOpenSSH Heartbeat/Watchdog for OpenSSH のパッチを当てて、コンパイルし直す。

必要なものは

の2つのソースファイル。 これらソースファイルを展開してパッチを当ててコンパイルする。
$ tar zxvf openssh-3.8p1.tar.gz
$ tar zxvf openssh-3.8p1-watchdog.patch.tgz
$ cd openssh-3.8p1
$ patch -p0 < ../openssh-3.8p1-watchdog.patch
$ ./configure
$ make
# make install

インストールが成功したら,ターミナルを開き直してsshを起動する。 例えば、inside.somehost.com から outside.otherhost.com にトンネルを掘る場合には、次のように指定する。

inside$ ssh -o 'Heartbeat 60' -N -p 10022 localhost -R 2200:outside.otherhost.com:22
これによって接続が維持される。

このとき外部からトンネルを通って接続するには、

outside$ ssh -p 2200 localhost
とすればよい。

SSHの設定ファイル.ssh/config

Heartbeat 60
と書いてもよい。

何秒おきに信号を送るかはルーターに依るが、我が家にある無線ルーターは120秒で切れる。 したがって、例えば110秒に設定すれば接続が維持されるようになる。

▼参考サイト or 参考文献

Mac OS X の起動時にstoneをサーバーとして起動する

環境:Mac OS X 10.3

Mac OS X 起動時にアプリケーションを立ち上げるには StartupItems を使う。 /Library/StartupItems/ 以下にディレクトリ stone を作成する。 そのディレクトリの中に スクリプトファイル stone を作成する。 このスクリプトファイルはディレクトリ名と同じにしなければならない。

stone には次のように記述する。

#!/bin/sh
. /etc/rc.common
##
# Start up stone
##
if [ "${STONE:=-NO-}" = "-YES-" ]; then
  ConsoleMessage "Starting Stone"
  /usr/local/bin/stone localhost:22 443/ssl &
fi
また stone/ 以下に StartupParameters.plist を作成し,以下のように記述。
{
  Descrption = "Stone"; 
  Provides =("Stone"); 
  Requires =("Resolver");
  OrederPreference="None";
  Messages =
  {
    start = "Starting Stone";
    stop = "Stopping Stone";
  };
}

そして/etc/hostconfig

STONE=-YES-
を追記する。

▼参考サイト or 参考文献