2010-05-24 44 views
1

這是我嘗試使用cgi-perl腳本的第一步。我在我的(root用戶)本地機器和遠程機器之間建立了SSH密鑰。我試圖在遠程盒子上運行一個命令,並在我的本地機器託管的網頁上顯示輸出。該腳本從命令行運行良好,但是,當從網頁調用時會引發SSH密鑰錯誤,因爲運行腳本的用戶是apache而不是root用戶。有沒有辦法解決這個問題?使用cgi-perl腳本的無密碼SSH

+0

創建用戶阿帕奇SSH密鑰? – 2010-05-24 18:35:20

+0

登錄到遠程框的用戶需要sudo權限才能獲取狀態。我不認爲管理員會讚賞太多的帳戶有訪問權限。 – 2010-05-24 18:39:13

+0

@AV:但是爲root創建一個SSH密鑰對也不是一個好主意。特別是如果這應該用於自動化Web過程。 – 2010-05-24 18:40:26

回答

2

如果您還沒有一個受限帳戶,創建一個,創建一個SSH密鑰,並補充說,應允許用戶(例如,通過visudomore about sudoers)通過sudo執行到/etc/sudoers文件中的命令。這是最安全的方法。
你甚至可以用這種方式限制用戶,他可以只有執行這些命令。對於

我不知道Perl的,但正常的,你可以指定哪些用戶應通過SSH進行登錄:

ssh [email protected] 

更新:

您使用的是Net::SSH::Perl模塊?如果是這樣,只需設置相應user

my $host = "perlhowto.com"; 
my $user = "user"; 
my $password = "password"; 

#-- set up a new connection 
my $ssh = Net::SSH::Perl->new($host); 
#-- authenticate 
$ssh->login($user, $pass); 

(我只是複製和粘貼從perlhowto.com這個代碼)

+0

好的。我只需要與遠程主機的管理員進行交談即可建立訪問權限。但是有沒有一種方法可以讓腳本在從網頁調用時以root身份運行? – 2010-05-24 18:46:50

+0

@AV:正如我所說的,通常你可以指定哪個用戶應該通過SSH登錄:'user @ host',在你的情況下它將是'root @ host'。但它也可能是你不允許ssh作爲root用戶。 – 2010-05-24 18:48:20

+0

實際上,本地計算機上的root用戶連接爲「dummy @ remote」,並且虛擬用戶已被授予獲取狀態的權限。是的,我會嘗試遵循獲得apache的ssh密鑰鏈接到虛擬用戶的路線。 – 2010-05-24 18:51:39