【发布时间】:2019-02-23 04:19:55
【问题描述】:
为了我的解释,请记住以下几点。
Machine 1 Internal = 127.0.0.1
Machine 1 External = 192.0.0.1
Machine 2 Internal = 127.0.0.2
Machime 2 External = 192.0.0.2
Client External = 10.0.0.1
所以,我会尝试连接到机器#1的内部IP,同时在机器#1上:
$server = "127.0.0.1";
$conn = ssh2_connect($server, 22);
结果 [/var/log/httpd/error_log]:
[:error] [client 10.0.0.1:0000] PHP Warning: ssh2_connect(): Unable to connect to 127.0.0.1 on port 22 in /var/www/html/file.php on line 8
[:error] [client 10.0.0.1:0000] PHP Warning: ssh2_connect(): Unable to connect to 127.0.0.1 in /var/www/html/file.php on line 8
将 IP 从内部更改为外部会产生相同的错误。
现在,我将尝试连接到机器#1 的外部 IP,同时 PHP 文件从机器 #2 的网络服务器运行:
$server = "192.0.0.1"
$conn = ssh2_connect($server);
[/var/log/httpd/error_log] 中的结果:
[:error] [client 10.0.0.1:0000] PHP Warning: ssh2_connect(): Unable to connect to 192.0.0.1 on port 22 in /var/www/html/file.php on line 8
[:error] [client 10.0.0.1:0000] PHP Warning: ssh2_connect(): Unable to connect to 192.0.0.1 in /var/www/html/file.php on line 8
所有这些都是如此,但奇怪的是,如果我通过 php -a 解释器运行确切的代码,然后继续进行身份验证并运行命令,一切都会完美无缺。
有什么问题??
【问题讨论】:
-
您能告诉我们您使用的是哪种 Apache 和操作系统吗?例如,在 SELinux 上,您应该运行
setsebool -P httpd_can_network_connect 1以允许 HTTPD 脚本和模块使用 TCP 连接到网络 -
操作系统:
CentOS Linux release 7.5.1804 (Core)Apache:Server version: Apache/2.4.6 (CentOS)