php

PHP使用SSH连接并控制服务器

自渡
2024-11-06 / 0 评论 / 16 阅读

php中如果想通过 SSH 连接到服务器执行命令并返回结果,可以使用phpssh2 扩展。下面是我编写的一个简单的代码,记录使用 ssh2 扩展连接到远程服务器并执行命令的过程。

安装所需的扩展

php中要正常使用ssh2模块,必须事先安装ssh2扩展
对于ubuntu/debian系统

apt install php-ssh2

对于centos/redhat系统

yum install libssh2 libssh2-devel 
#如果php是通过编译安装的,可以通过dnf来安装扩展
yum install dnf
dnf install libssh2-devel

或者通过编译安装ssh2模块(不推荐)

wget https://pecl.php.net/get/ssh2-1.3.1.tgz
tar -xzf ssh2-1.3.1.tgz
./configure --with-php-config=/bin/php/php-config 
make && make install

示例代码

<?php
// SSH 连接的配置
$ssh_host = 'your_server_ip'; // 远程服务器 IP
$ssh_port = 22;                // SSH 端口
$ssh_username = 'your_username'; // SSH 用户名
$ssh_password = 'your_password'; // SSH 密码

// 创建 SSH 连接
$ssh_connection = ssh2_connect($host, $port);

if ($connection) {
    // 验证用户名和密码
    if (ssh2_auth_password($connection, $username, $password)) {
        echo "SSH 连接成功!\n";

        // 执行命令
        $ssh_command = 'ls -la'; // 你想要执行的命令
        $ssh_stream = ssh2_exec($ssh_connection, $ssh_command);

        // 使流可用
        stream_set_blocking($ssh_stream, true);
        
        // 获取命令输出
        $ssh_output = stream_get_contents($ssh_stream);
        fclose($ssh_stream); //关闭ssh连接

        // 输出结果
        echo "命令输出:\n$output\n";
    } else {
        echo "SSH 认证失败。\n";
    }
} else {
    echo "无法连接到服务器。\n";
}
?>

代码说明

  1. 配置连接信息

    • your_server_ip:替换为您的服务器 IP 地址。
    • your_username:替换为 SSH 用户名。
    • your_password:替换为 SSH 密码。
  2. 建立连接

    • ssh2_connect 用于建立 SSH 连接。
  3. 认证

    • ssh2_auth_password 用于使用用户名和密码进行身份验证。
  4. 执行命令

    • ssh2_exec 用于在远程主机上执行命令。
  5. 获取输出

    • 使用 stream_get_contents 获取命令的输出,并打印结果。

注意事项

  • 确保已正确安装并启用 ssh2 扩展。
  • 如果使用的是密钥认证,应该使用 ssh2_auth_pubkey_file 方法进行认证。
  • 在生产环境中,避免在代码中硬编码密码,可以考虑使用环境变量或配置文件。
0

评论 (0)

取消