まず基本。
server | clienthost HOSTNAME |
client | listenmode |
を設定すると server から client へ接続される。以下補足。
- serverport は両方に必要。(もしくは両方指定しないで自由に通信させるか、どっちか。でも自由に通信できるんだったら tunnel の意味ないよね :)これは Zebedee の接続ポートを明示的に制限する場合の基本。
- listenmode の client は設定した serverport 及び tunnel のすべてのポートで listen する。ただし、tunnel の方に書いた port については、localsource true の場合は localhost 以外からの接続は受け付けない。
- firewall の設定は serverport を開けておく。
- client が listenmode でなおかつ serverhost * でない場合は、server の名前をどうにかして client が解決できないといけない。例えば DNS のない LAN 内の場合は Windows <-> Un*x 間は普通名前解決できないので繋がらない。
- serverhost * の listenmode は要するにサイバーノーガード状態なので identity checking を行う。この際、秘密鍵、公開鍵は以下のように
listenmode client | include private key |
server | CHECKIDFILE public key |
接続 ok
listenmode client | CHECKIDFILE public key |
server | include private key |
接続 ok
どっちに何を置いても繋がる。秘密鍵があれば公開鍵は生成できるので、より信用できるホストに秘密鍵を置いておいた方がいいかな。
接続手順
server は Zebedee の listen にだけは connect するが、実際の認証は client 側で接続要求が発生してから。
- client を起動(これはずっと接続待ち)
- server を起動(timeout するまで、default では 300秒待つ)
- client に接続するプログラムで通信を試みる
- server が timeout してなかったら tunnel が作成される
これを使えば ssh の remote forward を使わなくても「ちょっと風変わりな SSH 経由 VNC」と同じことができる。ただし、Zebedee server の timeout という制限は加わる。(ssh の場合は exit しない限り基本的には繋がりっぱなし。)
なぜなら Windows は起動したバイナリファイルをロックしてしまうから。terminal からは detach されるが Windows が放してくれないので、タスクマネージャから zebedee のプロセスを殺すか、Windows をログオフあるいはシャットダウンしない限り USB メモリを抜けなくなる。まぁそういうもんだと思っていればいいかもしれないが、すぐに抜きたい場合もあるでしょうし、みんなが「プロセス」なんてものを意識しなきゃいけないってのはちょっとハードル高いんじゃないかと。
PortForwarder みたいな GUI が Zebedee にもあればいいんだけど、そういうものはないので。。。
Windows の GUI プログラミングはできないので誰か作ってくんないかなぁ。
Photo は Enjoying Multimedia に統合しよう。