2010-10-08 62 views
0

我正在尝试编写与openssh的-oProxyCommand兼容的实用程序。我写了一个实用程序,它是一个透明的套接字到一个SSH连接(或任何东西)。虽然它采取了一些调试,但我相当确信它确实工作正常(手动IO测试,大型二进制文件传输全部工作)。我应该如何编写我的ssh代理命令?

OpenSSH将无法使用它。我不知道为什么。我必须保证交付某些块大小或类似的东西吗?

下面是一个例子审判与调试输出运行:

cletus:Desktop jdizzle$ ssh -v -oProxyCommand='python ./tunnel_client.py 127.0.0.1 22 2>/dev/null' 127.0.0.1 
OpenSSH_5.2p1, OpenSSL 0.9.8l 5 Nov 2009 
debug1: Reading configuration data /path/jdizzle/.ssh/config 
debug1: Reading configuration data /etc/ssh_config 
debug1: auto-mux: Trying existing master 
debug1: Executing proxy command: exec python ./tunnel_client.py 127.0.0.1 22 2>/dev/null 
debug1: identity file /path/jdizzle/.ssh/identity type -1 
debug1: identity file /path/jdizzle/.ssh/id_rsa type -1 
debug1: identity file /path/jdizzle/.ssh/id_dsa type -1 
debug1: permanently_drop_suid: 501 
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1 
debug1: match: OpenSSH_5.1 pat OpenSSH* 
debug1: Enabling compatibility mode for protocol 2.0 
debug1: Local version string SSH-2.0-OpenSSH_5.2 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug1: kex: server->client aes128-ctr hmac-md5 none 
debug1: kex: client->server aes128-ctr hmac-md5 none 
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent 
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP 
Received disconnect from UNKNOWN: 2: Bad packet length 1546673200. 

,它的解密块在陌生的路上,这一事实导致相信我管工作不正常,但我已经运行它通过各种试验,并且不会错过一个节拍。我错过了什么?

回答

0

原来我是PHP魔术引号的另一个受害者。我流中的空字节正在被转换为背后的'\ 0'!显然我的测试都没有包含空字节。