在远程服务器上执行一个PHP脚本文件,而无需将其复制到远程服务器上

neo*_*nic 1 php ssh

我有两台(linux)服务器:A 和 B

一个 PHP 脚本在 A 上,我想在 B 上执行它,但没有在 B 上执行它,这个脚本永远不应该存在于 B 上(仅在 ram 中),所以没有“在 B 上复制,从 A 上的 ssh 命令执行,擦除乙”。

我有从 A 访问 B 的 ssh 密钥,但没有从 B 访问 A。也许是这样的:

ssh root@B 'php -r ' | echo /myscript/on_serverA
Run Code Online (Sandbox Code Playgroud)

或者

<?php
$script=file_get_contents('executable_php_script');
system('ssh root@IP \'php -r "'.$script.'"\'');
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

注意:这是一个非常具体的案例,所以我不需要替代或安全建议。

Que*_*tin 6

  • 您可以指定要在远程计算机上运行的命令的名称作为 ssh 的参数
  • PHP 将执行通过 STDIN 输入的脚本
  • 任何ssh通过管道传输的内容都将传递到正在运行的程序的 STDIN 中

因此:

ssh example.com php < test.php
Run Code Online (Sandbox Code Playgroud)

... 将 ssh 到example.com,在php那里运行并将内容test.php从本地机器传送到远程机器php


关于对该问题的评论:请注意,如果具有 root 访问权限的人example.com想要窃取脚本,他们可以用php包装器替换可执行文件,该包装器将 STDIN 记录到文件,然后再将其转发到真实的php. 这远非防弹安全措施。