当前位置:首页 > PHP

php实现ssh终端

2026-01-29 01:07:31PHP

使用 phpseclib 库实现 SSH 连接

phpseclib 是一个纯 PHP 实现的 SSH 库,无需额外扩展。安装可通过 Composer:

composer require phpseclib/phpseclib:~3.0

连接示例代码:

use phpseclib3\Net\SSH2;

$ssh = new SSH2('hostname');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('ls -la');

通过系统命令调用 SSH

若服务器已安装 OpenSSH,可用 PHP 直接调用系统命令:

$command = "ssh username@hostname 'ls -la'";
$output = shell_exec($command);
echo $output;

建立交互式终端

使用 proc_open 实现基础交互:

$descriptors = [
    0 => ["pipe", "r"],  // stdin
    1 => ["pipe", "w"],  // stdout
    2 => ["pipe", "w"]   // stderr
];

$process = proc_open('ssh username@hostname', $descriptors, $pipes);
if (is_resource($process)) {
    fwrite($pipes[0], "ls -la\n");
    fclose($pipes[0]);

    echo stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    proc_close($process);
}

密钥认证方式

使用密钥登录更安全:

use phpseclib3\Crypt\PublicKeyLoader;

$key = PublicKeyLoader::load(file_get_contents('/path/to/private.key'));
$ssh = new SSH2('hostname');
if (!$ssh->login('username', $key)) {
    exit('Login Failed');
}

异常处理

建议添加异常捕获:

try {
    $ssh = new SSH2('hostname');
    $ssh->login('username', 'password');
    echo $ssh->exec('whoami');
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}

注意事项

  • 确保服务器已开启 SSH 服务(默认端口 22)
  • 生产环境建议使用密钥认证而非密码
  • 长时间操作需设置超时:$ssh->setTimeout(30)
  • 敏感信息应存储在环境变量中,避免硬编码

php实现ssh终端

标签: 终端php
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。 创…

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

vue怎么实现终端

vue怎么实现终端

Vue 实现终端效果的方法 在 Vue 中实现终端效果通常涉及模拟命令行界面(CLI),包括输入命令、输出结果、光标闪烁等特性。以下是几种常见实现方式: 使用第三方库 xterm.js 是一个流行的…

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HT…