【发布时间】:2014-01-30 19:21:28
【问题描述】:
晚上好,
目前我正在开发一个使用 PHP 的脚本。 PHP 使用带有公钥的“ssh2_connect”作为连接远程主机的命令。此外,我使用 ssh2_exec 通过 user_a 执行一些命令。我想切换到 user_b 来执行 antoher 命令和 可选择返回 user_a。
$connection = ssh2_connect('192.168.2.100', 22, array('hostkey'=>'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'user_a', './ssh/id_rsa.pub', './ssh/id_rsa'))
{
echo "Public Key Authentication Successful\n<br />";
}
else
{
die('Public Key Authentication Failed');
}
if(!($stream = ssh2_exec($connection, "sudo su user_b ; cd ~ ; ls -la" )) )
{
echo "fail: unable to execute command\n";
}
else
{
stream_set_blocking( $stream, true );
echo stream_get_contents($stream);
}
ssh2_exec($connection, 'exit');
unset($connection);
问题是正常命令运行良好,但切换用户超时返回(sudo 文件已编辑)...我已经尝试使用 fwrite 发送命令。 ; 有什么解决方案可以通过一些命令(自己的 php 代码)来解决这个问题,还是使用http://phpseclib.sourceforge.net/ 更好?
【问题讨论】:
-
sudo 会提示输入密码。由于您没有发送一个,因此连接将等待一个,直到超时。
标签: php ssh switch-statement