从UI访问远程计算机时,无法通过shell脚本ssh到远程计算机

时间:2015-05-23 10:42:35

标签: perl shell ssh

我有一台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集成的新手。因此可能会遗漏一些小事。 感谢

2 个答案:

答案 0 :(得分:1)

从Windows机器上ssh时,所有连接都是以webuser身份进行的,无权将ssh连接到远程计算机。另一方面,当你从linux终端ssh时,你可以ssh作为用户有权这样做。这是因为linux用户在远程服务器上有ssh密钥。

您也可以尝试调查ProxyCommand哪些可能会拯救,但我不知道它将如何与Windows一起使用。

其他方法是为webuser创建ssh密钥并将它们放入remomte服务器,这将带来安全风险。

答案 1 :(得分:0)

当您自己运行时ssh提供验证密钥的密钥。当您通过Web服务器运行它时,Web服务器用户正在尝试运行ssh命令,并且没有提供您的ssh密钥,因此可能会提示您输入密码,而不是成功登录。

您可以通过为网络服务器用户生成ssh密钥并与目标系统共享该密钥来解决此问题,这至少可以说有一些安全隐患。