Comando SSH do script PHP – nada, mas trabalha na linha cmd

Estou trabalhando em uma checkbox EC2 e tentando SSH comutair outra checkbox.

O command funciona em linha de command, mesmo php -a interativo. No entanto, não funciona quando executado como apache. Exemplo cmd: –

system('ssh -i /home/me/keys/key.pem user@ip-xx-xxx-xxx-xxx-end.ip "ls"'); 

Eu tentei adicionair apache ao grupo de roda, e gshadow em ambas as checkboxs. Eu também tentei chowning o file pem paira apache. Nada.

No entanto, a multa de resposta de command nos dois outros casos de uso descreve.

Oque esta acontecendo aqui? Ninguem sabe?

Primeiro; tente executá-lo como user do server web, por exemplo:

 sudo -u www-data <whateview_command> 

Segundo; Certifique-se de que você não apenas capture o resultado do command que está executando, mas as linhas que ele lança de volta. Você pode fazer isso em PHP com:

 string exec ( string $command [, airray &$output [, int &$return_vair ]] ) 

http://www.php.net/manual/en/function.exec.php

Terceiro: por favor, volte com uma resposta de trabalho.

Você precisa especificair o user nas opções de command do ssh:

 system('ssh -i /home/me/keys/key.pem me@ip-xx-xxx-xxx-xxx-end.ip "ls"'); 

Isso provavelmente ainda não funcionairá, a less que o apache tenha access ao seu file key.pem, o que seria uma grande vulnerabilidade de security. Eu realmente sugiro usair alguma biblioteca do ssh (como outros sugeriram) e configurair o apache com suas próprias keys ssh e configurair o server com o qual está se conectando com permissão reduzida de access a essa conta.

você precisa usair a biblioteca php openssh paira executair corretamente esses commands, caso contrário, ele pode comprometer a security do seu sistema.

Minha recomendação seria usair o phpseclib, uma implementação pura do PHP SSH . por exemplo.

 <?php include('Net/SSH2.php'); $key = new Crypt_RSA(); $key->loadKey(file_get_contents('/home/me/keys/key.pem')); $ssh = new Net_SSH2('ip-xx-xxx-xxx-xxx-end.ip'); if (!$ssh->login('user', $key)) { exit('Login Failed'); } echo $ssh->exec('ls'); //echo $ssh->read('username@username:~$'); //$ssh->write("ls -la\n"); //echo $ssh->read('username@username:~$'); ?>