0

LinuxボックスにSSHで接続し、そのセッションから別のユーザーとしてログインしようとすると、問題が発生します。PHPでは常にハングします。

Example:
//Connect to server using pem files
$key = new Crypt_RSA();
$key->loadKey($options['pem_file']);
$ssh = new Net_SSH2($host);
$ssh->login($user, $key);

//This command works
$ssh -> exec("cd /var/www/site1");

//This hangs indefinitely but will work on the command line
$ssh -> exec("sudo suo www-data");

要約すると、私はサーバーに接続するためにpemファイルを使用しています。execを使用してコマンドを実行できますが、ユーザーを「sudo su」に切り替えようとすると、SSH2でハングしますが、これは通常のコンソールでは機能します。なぜこれが発生し、どうすれば回避できますか?

4

1 に答える 1

1

$ ssh-> exec()は「通常のコンソール」ではありません。コマンドの実行が終了すると、コマンドの出力を返します。しかし、コマンドが終了しない場合はどうなりますか?

代わりに$ssh->write()/ $ ssh-> read()を試してください。例えば。

例:

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->read('username@username:~$');
$ssh->write("cd /var/www/site1\n");
echo $ssh->read('username@username:~$');
$ssh->write("sudo suo www-data\n");
echo $ssh->read('newuser@newuser:~$');
?>
于 2012-10-29T21:48:21.440 に答える