【问题标题】:How to run CLI commands in PHP on another server using SSH?如何使用 SSH 在另一台服务器上的 PHP 中运行 CLI 命令?
【发布时间】:2020-05-13 22:53:07
【问题描述】:

我正在尝试在 PHP 中但在不同的服务器上运行 CLI 命令。为了在另一台服务器上运行命令,我使用了 linux ssh 命令。为了在 PHP 中运行 CLI 命令,我使用了exec()

这行得通...

$output = exec('cut -d: -f1 /etc/passwd'); //works!

这适用于从一台服务器的命令行到另一台服务器...

ssh my.otherserver.com "date"

但是,当我尝试在 PHP 中执行此操作时,它不起作用...

$output = exec('ssh my.otherserver.com "date"'); //does not work!

我正在尝试做的事情可能吗?我该怎么做呢?提前致谢。

【问题讨论】:

  • 尝试在远程服务器前添加用户名,root@my.otherserver.com。

标签: php ssh command-line-interface


【解决方案1】:

ssh2_connect 或 phpseclib

您可以使用 ssh2_connect 或 phpseclib。在我的 EC2 实例上,我必须安装 ssh2_connect 的包(例如 yum install php56-pecl-ssh2-0.12-5.15.amzn1.x86_64),因为它默认不存在。注意:这也可以使用 bash 脚本来完成。

<?php

//ssh2_connect:
$connection = ssh2_connect('localhost', 22);
ssh2_auth_password($connection, 'user', 'password');
$stream = ssh2_exec($connection, 'ls -l > /tmp/worked.txt');

//phpseclib:
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.example.com');
$ssh->login('username', 'password') or die("Login failed");
echo $ssh->exec('command');

进一步阅读:

http://phpseclib.sourceforge.net/

http://php.net/manual/en/function.ssh2-connect.php

【讨论】:

    【解决方案2】:

    要通过 ssh 连接到您的服务器,您需要使用 ssh2_exec php 函数。

    我推荐你使用phpseclib,它是 PHP SSH 实现的包装器

    【讨论】:

      【解决方案3】:

      要求:

      sudo apt install php-ssh2
      

      本例将从远程php服务器接收ls -ltrapR的输出。

      #!/usr/bin/php
      <?php
      $con=ssh2_connect('223.245.xx.xx', 22);
      ssh2_auth_password($con, 'root', 'bybyDRRxxxx');
      $shell=ssh2_shell($con, 'xterm');
      $stream = ssh2_exec($con, 'ls -ltrapR');
      stream_set_blocking($stream, true);
      $out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
      echo stream_get_contents($out);
      

      注意,因为它只是使用基本身份验证(Fine trought ssl,最好使用 vpn)。 还可以使用cryptographic keyselse 对其进行保护。

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 2013-03-03
        • 2021-11-27
        • 1970-01-01
        • 1970-01-01
        • 2020-12-29
        • 2017-10-24
        • 2023-03-16
        相关资源
        最近更新 更多