トップ 最新

ただのにっき

2002-10-16(水) [長年日記]

Zebedee(3)

昨日の続きをする。といっても、サーバへの仕込みは夕べのうちにやっておいたので、そのメモ。

ようするにhttpd(443)で待ち受けて、ssh(22)へトンネルするように設定フィルを書けばいい。Windows版のZebedeeで.zbdという拡張子が割り当てられていたのにヒントを得て、こんな感じのファイル、zebedeedを書く。実行属性を付ければそのまま実行できる。

#!/usr/local/bin/zebedee -f 
server true
serverport https
redirect ssh
logfile '/var/log/zebedee.log'
target localhost

HTTPS proxyを通さない場合は、クライアントから以下のように直接443につなげられればOKである。

client% zebedee -d -e 'ssh -p %d localhost' -T 443 server:ssh
zebedee(2875/1024):  waiting for client connection
zebedee(2875/1024):  accepted connection from 127.0.0.1
zebedee(2875/1024):  tunnel established to server port 22
 
server% _

stunnel

トンネリング実験第3弾はstunnelなんだけど……やっとautoconf対応のが出てきたよ(笑)。stoneもZebedeeも、Makefileしか入ってなかったからなー。

というわけで簡単にインストールまでできたのだが、こんどは日本語のいい教科書がWeb上で発見できなかった。今日はここまで(笑)。もっとも、SSLだとまずいかも、という昨日の考察を踏まえれば、stoneもstunnelも使わないのが得策か。

それにしても、こないだのstoneによるトンネリング成功でやめときゃぁいいのに、すっかりトンネル掘りが楽しくなって、いわゆる「手段の目的化」状態である。Htunの存在も教えてもらったし(そう言えば名前だけは聞いたことがある)、しばらく楽しめそうな気配である。

Zebedee(4)

さて、防火壁の内側で接続する。こっちも設定ファイルを書くことにしよう。HTTP/HTTPS proxyへのトンネルを掘っているstoneはそのままにして、SSL化を担当している末端のstoneをkill。そして以下のzebedee-clientを実行する。

#!/usr/local/bin/zebedee -f
include '/home/sho/.zebedee' # private key
server false
localsource true
logfile '/home/sho/var/log/zebedee.log'
serverhost localhost
serverport 10443
tunnel 10022:localhost:ssh

なんか、zebedeeの-dオプションの意味が逆転しているような気がするなぁ。まぁいいや、これでsshできるようになる。

% ssh -p 10022 localhost

Zebedee(5)

特定の一ヶ所へのトンネルは掘れたけど、日常的に使っている外部ホストは五本の指では足らない。特にSourceForgeのCVSは、使えると嬉しい。こいつらへのトンネルも欲しいところだが、あいにくおれは、これらのホストのrootではない。

しかし、Zebedeeは(というかたいていのトンネリングソフトは?)そこからさらに別のホストをターゲットにすることができるので、これを設定しよう。「server」のzebedeedはこんな感じに変更。

#!/usr/local/bin/zebedee -f 
server true
serverport https
redirect ssh
logfile '/var/log/zebedee.log'
target localhost:ssh
target server2:ssh

「server2」への接続要求は、「server」のZebedeeからさらにコネクションを延ばされる。「client」のzebedee-clientはこうする。

#!/usr/local/bin/zebedee -f
include '/home/sho/.zebedee' # private key
server false
localsource true
logfile '/home/sho/var/log/zebedee.log'
serverhost localhost
serverport 10443
tunnel 10022:localhost:ssh
tunnel 10122:server2:ssh

10022に接続するとlocalhost(server)のsshに、10122に接続するとserver2のsshにつながる。図にするとこんな感じか。ちなみにフォントには、いま話題のみかちゃんフォントを使用(意味なし)。

めでたしめでたし……と言いたいところなんだけど、残念ながら上の設定はまだ動いていない。serverへの接続はうまくいくんだが、server2へsshしようとすると、server2の名前が解決できない(社内LAN上なので外のDNSが引けない)。まぁ、~/.ssh/known_hostsに毎回異なる「localhost」を追加しようとするのも困るので、ここは/etc/hostsでserver、server2ともに127.0.0.1というIPアドレスを持つことにしてしまう。

これでいいだろ、と思ってリトライしてみたら、今度はこんな風になった。

% ssh server2
Permission denied (publickey,keyboard-interactive).

メッセージをGoogleしてみるとssh2での接続に失敗した時に出るそうなのでssh1にしてみるも、「Permission denied.」となって同様。他の解決策には「/dev/ttyに書き込み権限がないのでは」なんてのがあったけど、いったいどこのttyの話やら(笑)。

うーん。わからん。頭を冷やして考え直そう。