【问题标题】:PHP: ssh2_connect: cant connect to localhost or machine remotelyPHP:ssh2_connect:无法远程连接到机器的本地主机
【发布时间】: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)

标签: php apache ssh libssh2


【解决方案1】:

我可以使用setenforce 0 解决这个问题。 老实说,我在编程时遇到的最令人费解的问题。感谢您的帮助!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2022-01-13
相关资源
最近更新 更多