我的环境
我正在尝试通过 CLI 在 Windows 7 中运行此 PHP 脚本。
测试背景
为了建立 SSH,必须发送和接收横幅消息。您将“SSH-2.0-whatever\r\n”发送到服务器,服务器将“SSH-2.0-whatever\r\n”发回给您(这也可以通过其他方式完成),然后您会收到一条消息包含服务器支持的算法。IE。
(脚本 1)
<?php
$fsock = fsockopen('shell.sourceforge.net', 22);
echo fgets($fsock, 1024);
fputs($fsock, "SSH-2.0-test\r\n");
echo fread($fsock, 1024);
这是输出:
SSH-2.0-OpenSSH_5.3
♥♀
¶ólÆƧw↔F;ï÷╝ähºv ~diffie-hellman-group-exchange-sha256,diffie-hellman-group-e
xchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 ☼ssh-rsa,s
sh-dss ¥aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des
-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator
.liu.se ¥aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3de
s-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysato
r.liu.se ihmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160
@openssh.com,hmac-sha1-96,hmac-md5-96 ihmac-md5,hmac-sha1,umac-64@openssh.com,
hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 §none,zlib@
openssh.com §none,zlib@openssh.com
编码
因此,鉴于上面的输出,这两个脚本似乎一个接一个地运行,应该给出相同的输出:
(脚本 2)
<?php
$fsock = pfsockopen('shell.sourceforge.net', 22);
echo fgets($fsock, 1024);
(脚本 3)
<?php
$fsock = pfsockopen('shell.sourceforge.net', 22);
fputs($fsock, "SSH-2.0-test\r\n");
echo fread($fsock, 1024);
不幸的是,脚本 1 不匹配脚本 2 和脚本 3 的组合。脚本 3 似乎正在运行,就好像脚本 2 从未运行过一样。输出:
SSH-2.0-OpenSSH_5.3
SSH-2.0-OpenSSH_5.3
为什么它不起作用?