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の話やら(笑)。
うーん。わからん。頭を冷やして考え直そう。
https://www.netsecurity.ne.jp/article/3/2744.html とか、http://nao.tdiary.net/20021012.html#p03
とか。
stunnel-4.00 は、コマンドラインオプションがほとんど使えないんだけど作り方間違えたかな。
ちなみに POP over SSL で使えるのは確認してみたり。
そこは見たんだけど、凝った使い方してないから、今回のような複雑なトンネリングをする方法がわからなくって(汗
わたしのは over HTTPじゃないので参考にならないかと。
stunnel-4.0はstunnel-3.22以前とはほとんど別ものです。> たむらさん
たださんに於いてはぜひsslwrapも試して頂いてSSL中継プログラム全制覇をお願いしたい(笑)。
みかちゃんフォントのリンクがおかしいような気がするのですが。
ありゃ、ホントだ。直しました。