2016-03-10 163 views
0

我有一個Web界面和登錄機械化,通過檢查用戶是否可以在服務器上登錄或不登錄來完成身份驗證。Net ::無密碼的SSH2身份驗證

use Net::SSH2; 

#Get $un and $pw as POST data. 

my $ssh2 = Net::SSH2->new(); 
$ssh2->connect('localhost') or die $!; 

if($ssh2->auth_password($un, $pw)){ 
    $c->session->{logged} = 1; 
} 

我不想存儲會話的任何密碼。

而後來在流程中,我需要通過登錄用戶在服務器中執行一些命令。 所以在這一點上,我再次需要密碼,以使ssh2認證 (執行可以在其他頁面的流程中以後)。 我的問題是,一旦我第一次進行身份驗證,我可以存儲會話或用戶的任何內容(可能是私鑰),以便第二次不要求輸入密碼。

回答

0

我不認爲你可以這樣做。 Catalyst的會話可以存儲用戶數據,但是您需要知道Net :: SSH2是Net :: SSH2是XS模塊,因此,它的Net :: SSH2對象將是XS。 如果您嘗試存儲連接的Net :: SSH2對象,您將獲得核心轉儲。

轉儲網:: SSH2 OBJET的樣子:

$VAR1 = bless(do{\(my $o = 137381360)}, 'Net::SSH2'); 

你無法序列化/反序列化XS對象。您必須存儲密碼,或使用不同的身份驗證機制,例如密鑰身份驗證。

+0

我不會在會話中存儲$ ssh2對象。我需要的是在第一次登錄時以某種方式爲用戶生成公鑰/私鑰。然後在命令執行期間進行用戶密鑰認證。 –