我现在面临一个难题,我在网上找不到任何可以帮助我的东西。
我想通过SSH从我的服务器连接到另一台服务器以发送指令(第二台服务器管理Wi-Fi授权)。
尽我可以说,我认为问题出现了,因为我们更新了一台服务器。 (我不确定问题是否因此而出现。)
我来自Windows服务器,我想打电话给Linux。
这是脚本:
function executeCommand($command) {
$infoConnection = getInfoConnection();
$out = '';
//The Warning occurs here, impossible to go further
$connection = ssh2_connect($infoConnection["hostname"], 22);
if ($connection === false) {
$error = error_get_last();
throw new Exception("
Error Type : ".$error["type"]."<br/>
Message : ".$error["message"]."<br/>
File : ".$error["file"]."<br/>
Line : ".$error["line"]."<br/>");
}
ssh2_auth_password($connection, $infoConnection["username"], $infoConnection["password"]);
$stdio_stream = ssh2_shell($connection);
sleep(2);
fwrite($stdio_stream,$infoConnection["username"]."\n");
sleep(1);
fwrite($stdio_stream,$infoConnection["password"]."\n");
sleep(1);
fwrite($stdio_stream, $command."\n");
sleep(1);
while($buffer = fgets($stdio_stream)) {
$out .= $buffer;
}
fwrite($stdio_stream, 'exit');
unset($connection);
return $out;
}
这是警告:
警告:ssh2_connect()[function.ssh2-connect]:启动SSH连接时出错(-5):无法在第203行的../aff_wifi.php中交换加密密钥
第203行是这一行:
$connection = ssh2_connect($infoConnection["hostname"], 22);
当我“抓住”警告时,我有这个:
错误类型:2消息:ssh2_connect()[function.ssh2-connect]: 无法连接到ipAdress 文件:.. \ aff_wifi.php 行:203
你知道为什么会这样吗? 当我尝试使用PuTTY从我的服务器连接到另一台服务器时,一切正常
祝你有个美好的一天!
答案 0 :(得分:2)
当我尝试通过ssh2_connect从一个稍旧的xenial访问焦点ubuntu服务器时遇到了这个问题。解决方案是更新libssh2-1。即使php显示了旧版本,它也能正常工作。 在xenial中,我添加了焦点存储库(deb http://archive.ubuntu.com/ubuntu/焦点主要受限宇宙多重宇宙) ,在文件/etc/apt/sources.list中 然后 apt更新 apt安装libssh2-1
重新启动php以应用 删除焦点存储库并更新apt
答案 1 :(得分:1)
Warning: ssh2_connect() [function.ssh2-connect]: Error starting up SSH connection(-5): Unable to exchange encryption keys in ../aff_wifi.php on line 203
libssh2 0.x仅支持基于Diffie-Hellman SHA1的密钥交换。默认情况下,OpenSSH已禁用DH SHA1。这会使libssh2 0.x变得高度干燥。
选项1:更新libssh2
libssh2 1.7及更高版本支持DH SHA256和ECDH密钥交换。这些将与最新的OpenSSH一起使用。 1.x版本需要PHP 7。
选项2:使用phpseclib
如果您坚持使用PHP 5,那么libssh2不可用。 PHP5可用的最高版本是libssh2 0.13,该版本仍仅支持SHA1密钥交换。对我有用的另一个库是phpseclib。那支持diffie-hellman-group-exchange-sha256,并且我能够连接到更新的OpenSSH服务器。