braintag

公開してしまう備忘録

Raspberry PIで、stoneを使用する sslトンネルでssh接続

Raspberry Pi Type B 512MB
ネット環境によっては、インターネットへはhttp/httpsしか通してくれないところがあると思います。

遠隔地からsslトンネルでRaspberryPIにssh接続しようと思います。

Windows[stone]---[Internet:443]---[stone]RaspberryPI

通常は単に443でもsshを受ければいいだけなのですが、
パケットを覗かれるとsshであることがバレバレです。
stoneであれば、httpに偽装ができます。
http://www.gcd.org/sengoku/stone/Welcome.ja.html

なお、proxy超えは考慮していないです。

前提

  • サーバ側はRaspberryPIで、OSはRaspbian
  • サーバ側のポートは443を開けておく
  • クライアント側のポートは443がInternet側に通る(普通、開いているはず)

文中のstoneserverは、グローバルIPアドレス等に置き換えてください。

サーバ側(Raspbian)

まずはstoneをインストール

sudo apt-get install stone

設定

起動スクリプトに直接書きます

sudo vim /etc/init.d/stone

ssl3を明示的に指定しないとエラーになったので、Server,Client双方で指定しました。

#! /bin/sh

### BEGIN INIT INFO
# Provides: stone
# Required-Start: $local_fs $network $syslog
# Required-Stop: $local_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: packet repeater
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="TCP/IP packet repeater in the application layer"
NAME=stone
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-z ssl3 -l -D localhost:22 10443/ssl -- localhost:10443 443/http"
SCRIPTNAME=/etc/init.d/$NAME
KILL=/usr/bin/killall

[ -x "$DAEMON" ] || exit 0

case "$1" in
  start)
        echo "Starting $DESC:" "$NAME"
        $DAEMON $DAEMON_ARGS
        ;;
  stop)
        echo "Stopping $DESC:" "$NAME"
        $KILL $NAME
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop}" >&2
        exit 3
        ;;
esac
起動と自動起動設定

起動はinit.dで、自動起動はrc.dで。

sudo chmod +x /etc/init.d/stone
sudo /etc/init.d/stone start
sudo update-rc.d stone defaults 99 1

クライアント側の設定(Windows7)

Windows版のstoneをインストール

といっても解凍して何処かに置くだけです。
自分はC:\Program Filesに置きました。

そして設定
-L "C:\Program Files\stone23xp\error.log"
-a "C:\Program Files\stone23xp\access.log"
-q ssl3
localhost:10443/ssl 10022
--
stoneserver:443/http 10443 "CONNECT stoneserver:443 HTTP/1.0"
Windows上のサービスとして登録する

コンソール上で以下を実行

C:\Program Files\stone23xp\stone -M install repeater -C C:\Program Files\stone23xp\stone.cfg

そのままだとサービスはなにもしないので、以下で有効化&自動起動に設定。

Windows->コントロールパネル->管理->サービス->Stone repeaterを有効化・自動起動

SSHクライアントの起動

Teratermか何かで、localhost:10022にsshで繋げばリピートされ、リモートのRaspberryPIにSSHでつながる。