春山です.
> tcpdumpの結果です。
> AAA.AAA.AAA.AAAがクライアントでBBB.BBB.BBB.BBBがSSHサーバーです。
> 1回目失敗し、2回目に成功している理由が謎です・・・
tcpdump tcp port 22 and host XXX.XXX.XXX.XXX -n -X -s 100
として パケットの中身を 最大100byte(-s) ASCII で表示(-X)させると
SSHサーバが バージョン文字列を返すときの出力が
12:06:52.358463 IP XXX.XXX.XXX.XXX.22 > YYY.YYY.YYY.YYY.33668: P 1:32(31) ack 1 win 1448 <nop,nop,timestamp 1207870569 7878011>
0x0000: 4500 0053 105c 4000 3606 6b4d dadb 978b E..S.\@.6.kM....
0x0010: da2a 7c6a 0016 8384 3764 b43f e513 9a9c .*|j....7d.?....
0x0020: 8018 05a8 7209 0000 0101 080a 47fe a469 ....r.......G..i
0x0030: 0078 357b 5353 482d 322e 302d 4f70 656e .x5{SSH-2.0-Open
0x0040: 5353 485f 342e 3170 3120 4465 6269 616e SSH_4.1p1.Debian
0x0050: 2d36 0a -6.
といった感じになります.
ここでは, 「SSH-2.0-OpenSSH_4.1p1 Debian-6」というバージョン文字列に続いて
0x0a という改行コードが返されていることがわかります.
改行コードが返ってきているので クライアントは 先の稲村さんのメールで示された
Remote protocol version 文字列を読むルーチンのループから抜け出して次の処理を
することができます.
FU JI さんの環境で途中で止まる場合にどのような出力がサーバから返ってきているか
(もしくは来ていないか)わかれば問題がはっきりするかもしれません.
春山 征吾 / HARUYAMA Seigo haruyama@unixuser.org haruyama@queen-ml.org