PHP 连接 SSH 并执行命令

Akkariin 发表于 2018-10-25 02:17:07 | 查看:725 | 编程


编程节点第一帖~

有时候因为业务需要我们只能通过 SSH 来操作服务器,或者说你想写一个简单的 php 脚本帮你每天在服务器上执行一些操作之类的,那么 php 如何连接到 SSH 呢?

请接着往下看。

安装扩展

首先需要安装 php-ssh2,这是一个 PHP 的扩展,用于连接 ssh

Windows 下的安装方法:
  1. 打开 http://pecl.php.net/package/ssh2
  2. 根据你自己的 PHP 版本,选择对应的扩展下载,例如我的是 PHP 7.2.9,我就选择 1.1.2 版本,右边有一个 图标,点进去就可以下载 DLL
  3. 下载完解压,把 libssh2.dll 放进 PHP 安装目录,php_ssh2.dll 放进 PHP 安装目录的 /ext/ 文件夹里,然后修改你的 php.ini,在结尾加一行:extension=php_ssh2.dll
  4. 重启你的 PHP 即可。
Linux 下的安装方法:

安装 libssh2

wget https://www.libssh2.org/download/libssh2-1.8.0.tar.gz && tar xzvf libssh2-1.8.0.tar.gz && cd libssh2-1.8.0/ && ./configure --prefix=/usr/local/libssh2 && make && make install

安装 ssh2

wget http://pecl.php.net/get/ssh2-1.1.2.tgz && tar xvf ssh2-1.1.2.tgz && cd ssh2-1.1.2/ && phpize && ./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2 --with-php-config=/usr/local/php/bin/php-config && make && make install

安装完成后,就可以看到以下输出

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/

最后那个 20170718 可能不一样,但是基本上就在那里面。

编辑你的 php.ini,在结尾加入一行:extension=ssh2.so

然后重启 Nginx 或者 Apache 就可以了!

连接到 SSH 服务器

以下是一段示例代码,连接到 SSH 服务器并执行命令 echo “Hello World”

<?php
function runcmd($conn, $cmd) {
    $stream = ssh2_exec($conn, $cmd);
    stream_set_blocking($stream, true);
    $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
    // Windows 下要用 iconv,不然会乱码
    // return iconv("UTF-8", "GB2312//IGNORE", stream_get_contents($stream_out));
    return stream_get_contents($stream_out);
}
$conn = ssh2_connect('服务器地址', 22);
ssh2_auth_password($conn, "root", "服务器密码");
echo runcmd($conn, 'echo "Hello World"');

这样就可以轻松连接到服务器并执行命令了。

Akkariin 在 2018-10-25 02:17:07 发表了帖子


img


帖子评分

评分是对作者的一种鼓励,您可以在评论框输入 /cs score 分数 附言 对帖子进行评分。

最少 1 分,最大 5 分,评分会消耗自己的积分,不能给自己的帖子评分。

暂时没有人评分!


发表你的评论

回帖时请注意遵守论坛发言规定,请勿恶意灌水。

  回帖倒序排列   匿名回复 您还可以输入 2000  


欢迎来到 ZeroDream 论坛!

您还没有登录噢 :P

登陆以后就可以发帖和回复啦~


系统主题选项

在线人数:Loading...

WebSocket 状态:Loading...