使用php连接ssh

时间:2014-06-19 01:08:21

标签: php ssh libssh2

在我的VPN上,我有一个远程服务器和一个远程路由器(运行带有API的RouterOS并支持ssh连接)。我想要的是编写一个php脚本并将其部署在服务器上,以便它使用ip地址和登录凭据连接到远程路由器,然后运行一些命令。

我在互联网上看到有一个libssh2.php库的解决方案,但我无法弄清楚如何在服务器上安装/使用甚至测试它。服务器正在运行CentOS。

提前谢谢!!!

2 个答案:

答案 0 :(得分:1)

我认为你最好用phpseclib, a pure PHP SSH implementation。它比libssh2具有许多优点:

http://phpseclib.sourceforge.net/ssh/compare.html

以下是一个例子:

<?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');
?>

答案 1 :(得分:0)

之前我这样做过,只是直接使用SSH命令。例如:

$sshCmd = "ssh user@1.2.3.45 \"ls -la ~\"";
exec($sshCmd, $output, $errorCode);
echo "Error code: $errorCode\n";
echo "Output: " . implode("\n", $output);

如果要运行更复杂的脚本,可以将其放在.sh脚本中然后通过bash运行:

$sshCmd = "ssh user@1.2.3.45 'bash -s' < \"/path/to/script.sh\"";
exec($sshCmd, $output, $errorCode);
echo "Error code: $errorCode\n";
echo "Output: " . implode("\n", $output);