1
2
3
4
5
6
7
|
openssl: 加密算法集合,C语言实现 libssh2:ssh2协议库库,C语言实现 PECL/ssh2: libssh2的php扩展,允许php程序调用libssh2中的函数 依赖关系:PECL/ssh2 –> libssh2 –> openssl |
什么是php的ssh2扩展
Php ssh2扩(以下简称PECL/ssh2),允许在php程序中远程执行系统命令和文件传输,不需要在被监控的机器上单独开发和部署类似agnet的"木马"程序,大大降低了运维成本。
Php ssh2扩展需要的依赖库:
openssl: 加密算法集合,C语言实现
libssh2:ssh2协议库库,C语言实现
PECL/ssh2: libssh2的php扩展,允许php程序调用libssh2中的函数
依赖关系:PECL/ssh2 –> libssh2 –> openssl
基于LNMP环境安装:
LNMP环境一键安装:wget http://soft.vpser.net/lnmp/lnmp1.4-full.tar.gz
wget https://www.libssh2.org/download/libssh2-1.5.0.tar.gz
wget http://pecl.php.net/get/ssh2-0.12.tgz
tar axf libssh2-1.5.0.tar.gz
tar axf ssh2-0.12.tgz
cd libssh2-1.5.0
./configure --prefix=/usr/local/libssh2
make && make install
cd ssh2-0.12
phpize
./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2 --with-php-config=/usr/local/php/bin/php-config
make
echo "extension=ssh2.so" >>/usr/local/php/etc/php.ini
cp /root/ssh2-0.12/modules/ssh2.so /usr/lib/modules/
cp /root/ssh2-0.12/modules/ssh2.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
php -i|grep ssh2
最后,我们再通过一个简单的PHP程序来试用SSH2,该程序首先连接远程服务器,然后执行相关操作,最后读取操作执行的返回结果,具体例子代码如下。
vim index.php
<?php
$connection = ssh2_connect( '192.168.100.201', 22 );
if ( ssh2_auth_password( $connection, 'root', 'redhat' ) ) {
echo '登陆成功!<br>';
}
else{
echo '登陆失败<br>';
return;
}
$stream = ssh2_exec($connection, "systemctl stop httpd");
stream_set_blocking( $stream, true );
echo "Output: " . stream_get_contents($stream);
?>