Ssh Phpseclib不能从Openshift工作,但可以从本地计算机(局域网外)工作

Ssh Phpseclib不能从Openshift工作,但可以从本地计算机(局域网外)工作,ssh,openshift,ssh-keys,openssh,phpseclib,Ssh,Openshift,Ssh Keys,Openssh,Phpseclib,我在openshift online上部署了我的代码。从那里,我试图连接我的其他服务器,比如说在不同的网络上的机器,我的脚本。Machine-A正在端口4444 Ubuntu 14.04上运行openssh服务器: <?php error_reporting(E_ALL); ini_set("display_errors", 1) include("../vendor/autoload.php"); include('Net/SSH2.php'); include('Crypt/RSA

我在openshift online上部署了我的代码。从那里,我试图连接我的其他服务器,比如说在不同的网络上的机器,我的脚本。Machine-A正在端口4444 Ubuntu 14.04上运行openssh服务器:

<?php

error_reporting(E_ALL);
ini_set("display_errors", 1)

include("../vendor/autoload.php");
include('Net/SSH2.php');
include('Crypt/RSA.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_SIMPLE);
$ssh = new Net_SSH2('mywebsite.redirectme.net', 4444);
$key = new Crypt_RSA();
$key->loadKey(file_get_contents('id_rsa'));
if (!$ssh->login('myusername', $key)) {
    echo $ssh->getLog();
    exit('Login Failed');

}

echo $ssh->exec('pwd');
echo $ssh->exec('whoami');
echo $ssh->getLog();
?>
openshift上该目录上的ls-l显示:

-rw-------. 1 849bc49************* 849bc49*************  887 Dec 28 02:05 id_rsa
-rw-------. 1 849bc49************* 849bc49*************  237 Dec 28 02:05 id_rsa.pub
首先,我在machine-B上复制了ssh密钥对,并手动将其复制到machine-A上的~/.ssh/authorized keys。然后,我将带有rsa密钥和脚本的整个文件夹推送到openshift

我可以从不同的网络连接机器…而不是使用相同代码的本地主机。因此,我猜phpseclib或ssh密钥的权限并不是真正的问题


Openshift online本身是否强制实施了一些限制?我做错了什么?

看起来可能为你的问题提供了答案。@neubert不是,它没有。我在github上发布了这个问题,认为这是一个phpseclib问题。但很明显,这并不是因为它在heroku也能起作用。在这个问题上提供的解决方案是为selinux提供的,但我正在运行Ubuntu。我还没有在Ubuntu上找到解决fsockopen相关问题的方法。可能是openshift的问题。听起来这个问题更适合superuser.com。不要使用phpseclib的开销,因为问题最终不是phpseclib的问题,只需尝试使用fsockopen连接到该IP/端口即可。但是,不要向该IP/端口发送任何内容-只要尝试连接,就会出现相同的错误。这是Selinux。这就是问题所在。Heroku和其他基于Ubuntu的软件没有这个问题。您不能在openshift上使用fsockopen。非常愚蠢和愚蠢。难怪现在没有人使用Openshift。
-rw-------. 1 849bc49************* 849bc49*************  887 Dec 28 02:05 id_rsa
-rw-------. 1 849bc49************* 849bc49*************  237 Dec 28 02:05 id_rsa.pub