【问题标题】:Execute a PHP script file on a remote server without copying it on the remote server在远程服务器上执行 PHP 脚本文件,而不在远程服务器上复制它
【发布时间】:2021-02-08 13:57:28
【问题描述】:

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

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

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

ssh root@B 'php -r ' | echo /myscript/on_serverA

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

有什么想法吗?

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

【问题讨论】:

  • 我有两辆车。我想开我的快车,但我也不想离开我慢车的舒适座位。如何在不离开舒适的汽车的情况下驾驶我的快速汽车? AKA -- 你为什么不能复制文件?
  • 因为我问这个问题....当然我“可以”复制文件,但我不想! (对服务器 B 具有 root 访问权限但不在服务器 A 上的人不应该“操纵”脚本)。
  • 一个更好的安全概念是只允许受信任的人使用 root 访问服务器..
  • 不可能,非常具体的情况,我不需要安全建议。我可以回答:如果这些人对磁盘有物理访问权限,那么 root 访问权限不是唯一的问题,这只是一个示例。

标签: php ssh


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

因此:

ssh example.com php < test.php

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


关于问题上的 cmets:请注意,如果在 example.com 上具有 root 访问权限的人想要窃取脚本,他们可以将 php 可执行文件替换为将 STDIN 记录到文件中的包装器,然后再将其转发到真实文件php。这远非万无一失的安全措施。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多