我有一台 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 并将它们放入远程服务器,这将是安全风险。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!