【问题标题】:Unable to ssh to a remote machine through shell script while accessing it from UI从 UI 访问远程计算机时无法通过 shell 脚本 ssh 到远程计算机
【发布时间】:2015-08-05 08:41:54
【问题描述】:

我有一台 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 集成的新手。所以也可能会遗漏一些小东西。 谢谢

【问题讨论】:

  • "shell 脚本被调用,但 ssh 似乎没有工作。"这很模糊。具体会发生什么?您收到任何错误消息吗? Web 服务器日志中是否出现任何内容?

标签: perl shell ssh


【解决方案1】:

当您从 Windows 机器 ssh 时,所有连接都以网络用户身份进行,该用户无权 ssh 到远程机器。另一方面,当您从 linux 终端 ssh 时,您可以作为用户 ssh 进行 ssh 操作。这是因为 linux 用户在远程服务器上有自己的 ssh 密钥。

您也可以尝试查看ProxyCommand,它可能会来救援,但我不知道它如何与 Windows 一起使用。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-26
      • 2014-05-21
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      • 2010-12-10
      相关资源
      最近更新 更多