当前位置:首页 > 科技  > 软件

如何使用PHP SSH2模块执行远程Linux命令

来源: 责编: 时间:2024-01-26 17:08:40 346观看
导读PHP SSH2扩展是用于在PHP程序中使用SSH(安全壳协议)的一种扩展。它允许建立加密连接和执行远程命令、上传和下载文件等操作,十分方便实用。下面我将为大家详细介绍一下该扩展的基本用法和常见操作。安装libssh2 安装libs

PHP SSH2扩展是用于在PHP程序中使用SSH(安全壳协议)的一种扩展。它允许建立加密连接和执行远程命令、上传和下载文件等操作,十分方便实用。下面我将为大家详细介绍一下该扩展的基本用法和常见操作。ILB28资讯网——每日最新资讯28at.com

安装

libssh2 安装

libssh2 是一个开源的C语言库,用于实现SSH(Secure Shell)协议的客户端功能。它提供了一组API函数,使开发者可以在自己的应用中实现SSH客户端的功能,如远程执行命令、文件传输和端口转发等。ILB28资讯网——每日最新资讯28at.com

wget https://libssh2.org/download/libssh2-1.11.0.tar.gztar -zxvf libssh2-1.11.0.tar.gzcd libssh2-1.11.0/./configuremakesudo make install

PHP-SSH2 安装

官方地址:https://pecl.php.net/package/ssh2ILB28资讯网——每日最新资讯28at.com

wget https://pecl.php.net/get/ssh2-1.4.tgztar -zxvf ssh2-1.4.tgzcd ssh2-1.4//usr/local/php-8.2.14/bin/phpize./configure --with-php-config=/usr/local/php-8.2.14/bin/php-configmakemake install

php.ini 添加扩展 ssh2.soILB28资讯网——每日最新资讯28at.com

sudo vim /usr/local/php-8.2.14/etc/php.iniILB28资讯网——每日最新资讯28at.com

extension=ssh2

命令行检查是否安装成功ILB28资讯网——每日最新资讯28at.com

/usr/local/php-8.2.14/bin/php -m|grep ssh2ssh2

使用

连接远程服务器与SSH2服务器建立连接是使用PHP SSH2扩展时的第一步。它需要传递服务器地址、端口号、用户名和密码。连接成功后,您可以执行各种远程操作。以下是一个简单的连接示例:ILB28资讯网——每日最新资讯28at.com

用户名和密码

$connection = ssh2_connect('tinywan.com', 22);$res = ssh2_auth_password($connection, "username", "password");if ($res) {    echo "Authentication Successful! ";} else {    echo "Authentication Failed! ";    exit(255);}

SSH 密钥

$connection = ssh2_connect('192.168.1.204', 22, ['hostkey' => 'ssh-rsa']);$res = ssh2_auth_pubkey_file($connection, 'tinywan','/home/tinywan/.ssh/id_rsa.pub','/home/tinywan/.ssh/id_rsa');if ($res) {    echo "Public Key Authentication Successful/n";} else {    echo('Public Key Authentication Failed');}

在此示例中,我们成功地连接到端口22上的tinywan.com服务器,并传递了正确的用户名和密码。远程执行命令 该扩展最常见的用途之一是在远程服务器上执行命令。ILB28资讯网——每日最新资讯28at.com

以下是一个使用ssh2_exec()函数执行命令并打印输出的示例:ILB28资讯网——每日最新资讯28at.com

$connection = ssh2_connect('tinywan.com', 22);ssh2_auth_password($connection, 'username', 'password');$stream = ssh2_exec($connection, 'ls -l');stream_set_blocking($stream, true);echo stream_get_contents($stream);

在此例子中,我们首先与服务器建立连接,然后使用ssh2_exec()在服务器上执行ls -l命令。我们通过stream_set_blocking()将流设置为阻塞模式,并使用stream_get_contents()获取流中的所有内容。输出打印为远程命令的执行结果。上传和下载文件 该扩展还允许您在服务器和本地计算机之间上传和下载文件。在本例中,我们将使用ssh2_scp_send()和ssh2_scp_recv()函数。ILB28资讯网——每日最新资讯28at.com

$connection = ssh2_connect('tinywan.com', 22);ssh2_auth_password($connection, 'username', 'password');ssh2_scp_send($connection, '/local_file', '/remote_file');ssh2_scp_recv($connection, '/remote_file', '/local_file');

在此示例中,我们使用ssh2_scp_send()函数将本地文件/local_file上传到远程服务器上的/remote_file路径。然而,我们也可以使用ssh2_scp_recv()函数从远程服务器下载文件到本地。错误处理 当使用PHP SSH2扩展时,您需要处理错误。在连接、执行、上传和下载操作失败时,该扩展将会返回错误代码和错误信息,以帮助您了解失败的原因。以下是一个错误处理的示例:ILB28资讯网——每日最新资讯28at.com

$connection = ssh2_connect('tinywan.com', 22);if (!$connection) {    die('Connection failed.');}$auth = ssh2_auth_password($connection, 'username', 'password');if (!$auth) {    die('Authentication failed.');}

使用if语句检查ssh2_connect()和ssh2_auth_password()函数是否成功执行。如果这两个函数中的任何一个出现错误,它将抛出一个失败信息并终止脚本的执行。ILB28资讯网——每日最新资讯28at.com

总结 PHP SSH2扩展为用户提供了一种简便的方法,在PHP程序中使用SSH进行连接、执行命令、上传和下载文件等操作。它在服务器管理和部署的过程中是非常有用的。在使用该扩展时,需要特别注意错误处理,以避免出现不必要的问题。希望通过本文的介绍,您对该扩展有了更多的了解。ILB28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-69010-0.html如何使用PHP SSH2模块执行远程Linux命令

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 聊聊什么是JSX以及在React中的使用

下一篇: iGame RTX 4070 Ti SUPER 系列显卡开售:游戏性能 2.5 倍于 RTX 3070 Ti!

标签:
  • 热门焦点
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • WebRTC.Net库开发进阶,教你实现屏幕共享和多路复用!

    WebRTC.Net库:让你的应用更亲民友好,实现视频通话无痛接入! 除了基本用法外,还有一些进阶用法可以更好地利用该库。自定义 STUN/TURN 服务器配置WebRTC.Net 默认使用 Google 的
  • 网传小米汽车开始筛选交付中心 建筑面积不低于3000平方米

    7月7日消息,近日有微博网友@长三角行健者爆料称,据经销商集团反馈,小米汽车目前已经开始了交付中心的筛选工作,要求候选场地至少有120个车位,建筑不能低
  • 滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 存在16项违法事实开始于2121年7月,历经一年时间,网络安全审查办公室对“滴滴出行”网络安全审查终于有了一个暂时的结束。据“网信
  • DRAM存储器10月价格下跌,NAND闪存本月价格与上月持平

    10月30日,据韩国媒体消息,自今年年初以来一直在上涨的 DRAM 存储器的交易价格仅在本月就下跌了近 10%,此次是全年首次降价,而NAND 闪存本月价格与上月持平。市
  • 苹果MacBook Pro 2021测试:仍不支持平滑滚动

    据10月30日9to5 Mac 消息报道,苹果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后获得了不错的评价,亮点包括行业领先的性能,令人印象深刻的电池续航,精美丰
Top