我有一台 Linux 机器,我在其中创建了一个 cgi 脚本 (JarPatch.cgi),其代码如下所示:
#!/usr/bin/perl
use warnings;
print "Content-type: text/html\n\n";
system ("sh JarPatch.sh");
JarPatch.sh 的代码如下所示:
#!/bin/bash
echo "Inside jar patching tool";
PJS_DEV=app4915@slcai833.us.oracle.com;
ssh -f $PJS_DEV "cd /slot/ems4915/appmgr/tmp; echo stopping server ; ./find_stop_servers.sh;"
echo "Exit jar patching tool";
这个脚本基本上会关闭远程机器上运行的服务器
问题陈述是这样的:
当我通过 Linux 终端执行这个 cgi 脚本时。我可以看到 ssh 命令正在执行。服务器已关闭。
当我在浏览器中通过 Windows 机器访问 cgi 脚本时,会调用 shell 脚本,但 ssh 似乎不起作用。
任何人都可以给我一个指针来解决这个问题吗?
我是 perl/shell 集成的新手。所以也可能会遗漏一些小东西。
谢谢
请您参考如下方法:
当您从 Windows 机器 ssh 时,所有连接都以网络用户身份进行,该用户无权 ssh 进入远程机器。另一方面,当您从 linux 终端 ssh 时,您可以作为用户 ssh 进行 ssh 操作。这是因为 linux 用户在远程服务器上有它的 ssh key 。
您也可以尝试查看ProxyCommand这可能会来救援,但我不知道它将如何与 Windows 一起使用。
另一种方法是为 webuser 创建 ssh key 并将它们放入远程服务器,这将是安全风险。




