permissão negada executando script sobre ssh

2

Quando uma página da web é carregada no servidor A, eu quero que ela execute um script no servidor B. Eu posso fazer isso com uma série de comandos do servidor A, entrando no servidor B e executando o script, mas ele precisa ser feito tudo em uma declaração para que o PHP possa executá-lo.

Isso funciona:

user@A$ sudo -u www-data bash
bash: /home/user/.bashrc: Permission denied

Então:

www-data@A$ ssh -i /etc/ssh/www-data/id_rsa remote@B
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-32-generic x86_64)

Então:

remote@B$ /home/web/script.php

(sem saída, mas eu posso ver os resultados no banco de dados)

Então, posso ver que todos têm acesso para receber a mensagem para onde está indo. Mas quando tento combiná-lo em uma declaração:

user@A$ sudo -u www-data bash
bash: /home/zen/.bashrc: Permission denied

(como seria o apache / php)

www-data@A$ ssh -i /etc/ssh/www-data/id_rsa remote@B '/home/remote/script.php'

então eu recebo:

bash: /home/remote/script.php: No such file or directory
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-32-generic x86_64) ....

Ele também me mantém logado no B, que é irrelevante, mas estranho.

Então, assim como um teste de sanidade, eu continuo de lá para executar o script:

remote@B$ /home/remote/script.php

Agradecemos antecipadamente por qualquer conselho !!

    
por dab 14.12.2012 / 02:43

1 resposta

2

A ordem de precedência com a cotação é provavelmente o problema:

ssh remote@B '/home/remote/script.php'

é muito diferente de:

ssh remote@B '/home/remote/script.php'

No primeiro, o shell está chamando script.php - na máquina local - o que provavelmente não retorna nada, então o comando acaba sendo ssh remote@B , dando a você um shell interativo.

O segundo comando passa uma instrução ( /home/remote/script.php ) através de ssh para o shell na máquina remota.

Tentando alterar suas aspas para aspas simples.

    
por 14.12.2012 / 05:45