模組隨選是個很好用的功能,但將系統搬到ubuntu22.04後卻不能用了,ssh登入會出現「sa」登入「127.0.0.1」失敗
原本以為是新版ubuntu有防火牆保護,造成連線失敗,試了一會兒,排除了這個可能性。
追了一下程式,覺得應是Net_SSH2這個套件的問題。
後來在https://ubuntu.pkgs.org/22.04/ubuntu-universe-amd64/php-phpseclib3_3.0.13-1_all.deb.html發現新版的程式
下載下來套用就可以了。
站長工具箱(急救版)modules/tad_admin/admin/adm_function.php
修改ssh_login function
//include XOOPS_ROOT_PATH . '/modules/tad_admin/admin/Net/SSH2.php'; //$ssh = new Net_SSH2($ssh_host, $xoopsModuleConfig['ssh_port']); include XOOPS_ROOT_PATH . '/modules/tad_admin/admin/phpseclib3/autoload.php'; $ssh = new \phpseclib3\Net\SSH2($ssh_host, $xoopsModuleConfig['ssh_port']);
V3.0 Minimum PHP version: 5.6.1
參考網站:
https://phpseclib.com/
https://github.com/phpseclib/phpseclib
站長工具箱 修改 modules/tad_adm/class/OnlineUpgrade.php
大約871行 function ssh_login
//set_include_path(XOOPS_ROOT_PATH . '/modules/tadtools/phpseclib'); //require 'Net/SSH2.php'; //$ssh = new \Net_SSH2($ssh_host, $TadAmModuleConfig['ssh_port']); //得注意phpseclib3安裝在哪兒,官方並沒有這個套件 include XOOPS_ROOT_PATH . '/modules/tad_admin/admin/phpseclib3/autoload.php'; $ssh = new \phpseclib3\Net\SSH2($ssh_host, $TadAmModuleConfig['ssh_port']);
phpseclib範例
<?php include('Net/SSH2.php'); $ssh = new Net_SSH2('www.domain.tld'); if (!$ssh->login('username', 'password')) { exit('Login Failed'); } echo $ssh->exec('pwd'); echo $ssh->exec('ls -la'); ?>
phpseclib3範例
<?php include 'phpseclib3/autoload.php'; $ssh = new \phpseclib3\Net\SSH2('www.domain.tld'); if (!$ssh->login('username', 'password')) { exit('Login Failed'); } echo $ssh->exec('pwd'); echo $ssh->exec('ls -la'); ?>