PHP+Swoole实现web版的SSH客户端
本来是想通过PHP的proc_open和进程进行交互,可是中间的坑太多了,不得不转换一下思路,然后想起来宝塔有网页版SSH客户端,然后研究了一下,嘿嘿,发现能成???。
2022-07-22 更新
使用了有名的xterm.js,基本可作为生产使用了。(权限记得做好)
测试Demo :http://cname.teiao.com:5701
Github:https://github.com/friend-nicen/php-web-ssh
Gitee:https://gitee.com/friend-nicen/php-web-ssh
代码尽量详细的说明了,不懂可以问我哈。
前期准备
PHP连接ssh是基于第三方拓展库,PECL/ssh2
( libssh2的php扩展,允许php程序调用libssh2中的函数)
然后有一个现成的、封装好大部分常用操作的库phpseclib:https://phpseclib.com
通过swoole的协程实现SSH的读和写并发进行以及websocket和浏览器进行通信。
记录
使用xtem.js的时候有一个原则就是前端只管把用户输入的东西提交给服务端,其他的不用管,而我当时的思路是只有当用户输完的想要的命令回车之后才提交,因此踩了很多坑。后面突然就想通了,本身前端就是作为数据输入端,至于什么时候回车、什么时候执行命令,shell本身就会进行处理。
1.安装ssh2拓展库
1.1 Linux安装
首先要安装libssh2(libssh2是一个C 函数库,用来实现SSH2协议。)https://www.libssh2.org
#centos
yum install libssh2 libssh2-devel
#Ubuntu
apt-get install libssh2-1-dev libssh2-1
然后通过pcel安装ssh2拓展 ,不同的PHP对应不同的版本,一定要找准版本(https://pecl.php.net/package/ssh2),如下使用的是1.1.2版本:
pecl install ssh2-1.1.2
如果安装报错,可以尝试安装其他更新或者更旧的版本,当然也可以通过phpize进行手动安装。
1.2 window安装
libssh2好像一般都有,没有就下载丢到系统里,主要是安装ssh2。根据自己PHP的版本去下载,可以看下自己的php版本,以及是32位的还是64位的,32位的下载x86, 64位的下载x64
下载地址:https://windows.php.net/downloads/pecl/releases/
php.ini中加入 extension=php_ssh2.dll ,完事。
2.swoole安装
参考官网:https://wiki.swoole.com/#/environment
3.phpseclib
官网:https://phpseclib.com,composer安装即可:
composer require phpseclib/phpseclib:~3.0
相关文章
- 7b2首页文章缩略图鼠标悬浮放大css
- 使用PyTorch实现简单的AlphaZero的算法(3):神经网络架构和自学习
- MSE = Bias² + Variance?什么是“好的”统计估计器
- 从头开始进行CUDA编程:原子指令和互斥锁
- 在本地PC运行 Stable Diffusion 2.0
- 使用TensorFlow Probability实现最大似然估计
- 基于Vision Transformers的文档理解简介
- 从另外一个角度解释AUC
- 强化学习的基础知识和6种基本算法解释
- 变分自编码器VAE的数学原理
- 15个节省时间的Jupyter技巧
- R语言1
- 2022年最有开创性的10篇AI论文总结
- FMEA分析方法在科研项目管理中的应用
- 彻底搞定select、poll、epoll
- SSL证书介绍
- 9个时间序列交叉验证方法的介绍和对比
- Diffusion 和Stable Diffusion的数学和工作原理详细解释
- 联邦学习 (FL) 中常见的3中模型聚合方法的 Tensorflow 示例
- 使用Stable Diffusion和Pokedex的描述生成神奇宝贝图片