我想连接到远程服务器来执行命令。
这是我的php:
<?php
$dir='ChemAliveMolOpt/TEST';
$remote_file = $dir.'/inputfile';
$command="/home/bomble/ChemAliveMolOpt/ChemAliveExec/ChemAliveMolOpt ".$remote_file;
$connection = ssh2_connect('bomble@40.127.184.54', 21);
ssh2_exec($connection, $command);
?>
这是我的错误:
PHP警告:ssh2_connect():php_network_getaddresses:getaddrinfo 失败:第1行PHP上的php shell代码中未知的名称或服务 警告:ssh2_connect():无法连接到bomble@40.127.184.54 第1行php shell代码中的端口21 PHP警告:ssh2_connect(): 无法连接到第1行的php shell代码中的bomble@40.127.184.54
如果我使用ssh bomble@40.127.184.54连接到服务器,它正确连接。
有任何建议吗?
答案 0 :(得分:2)
您收到错误是因为您尝试连接到无法解析的主机名。这是因为'bomble@40.127.184.54'是不是有效的主机名。显然,该字符串无法解析为IP地址。
文档非常清楚如何使用ssh2_connect()
命令:http://php.net/manual/en/function.ssh2-connect.php
它明确指出函数的第一个参数必须是主机名,而不是除了其他东西之外还包含主机名的。
BTW:您指定的端口号(端口21)也令人惊讶。你确实确定你有一个ssh服务器在该端口上监听?虽然在技术上可能会非常令人惊讶......
答案 1 :(得分:1)
我的脚本在Windows上运行,但在Linux上不运行。
我发现此解决方案对我有用。
更改Selinux
参数。
setsebool -P httpd_can_network_connect on
答案 2 :(得分:0)
在xampp或wamp中添加并启用 php_ssh2 扩展名。确保您将使用正确的php_ssh2扩展名。否则,它将无法正常工作。