簡體   English   中英

從UI訪問時無法通過Shell腳本SSH到遠程計算機

[英]Unable to ssh to a remote machine through shell script while accessing it from UI

我有一台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進行連接時,所有連接都是作為webuser建立的,該用戶無權ssh進入遠程計算機。 另一方面,當您從linux終端使用ssh時,您可以以具有授權的用戶身份使用ssh。 這是因為linux用戶在遠程服務器上具有其ssh密鑰。

您也可以嘗試研究ProxyCommand可能會搶救出來,但我不知道它將如何與Windows一起工作。

另一種方法是為Web用戶創建ssh密鑰,並將其放入遠程服務器中,這將帶來安全風險。

當您以自己的身份運行它時, ssh會提供您的密鑰來對您進行身份驗證。 當您通過Web服務器運行它時,Web服務器用戶正在嘗試運行ssh命令,並且沒有提供您的ssh密鑰,因此可能會提示您輸入密碼,但未成功登錄。

您可以通過為Web服務器用戶生成ssh密鑰並與目標系統共享該密鑰來解決此問題,至少可以說這對安全性有影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM