簡體   English   中英

PHP使SSH會話保持活動狀態/存儲

[英]PHP Keep SSH session alive/stored

我正在使用Codeigniter,下面是用於通過SSH從設備獲取一些信息的代碼。 整個過程大約需要2.2秒,其中2秒是登錄過程。 我有什么辦法可以至少在一定時間內存儲或保持會話? 我用於連接的庫是phpseclib

        $time = microtime(true);
        $this->ssh2->Net_SSH2('XX.XX.XX.XX');
        if (!$this->ssh2->login('XXXX', 'XXXXXXXX')) {
            exit('Login Failed');
        }
        echo (microtime(true) - $time) . ' elapsed';
        $string = $this->ssh2->exec('/usr/www/status.cgi');

在不提示您輸入密碼的情況下進行SSH登錄的唯一方法是使用公鑰加密。

查找SSH登錄自動化 引用站點以防萬一:

你的目標

您想使用Linux和OpenSSH來自動執行任務。 因此,您需要從主機A /用戶a自動登錄到主機B /用戶b。 您不想輸入任何密碼,因為您想從Shell腳本中的ssh調用。

怎么做

首先以用戶a身份登錄A並生成一對認證密鑰。 請勿輸入密碼:

 a@A:~> ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/a/.ssh/id_rsa): Created directory '/home/a/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/a/.ssh/id_rsa. Your public key has been saved in /home/a/.ssh/id_rsa.pub. The key fingerprint is: 3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A 

現在,以s用戶身份使用B上的ssh創建目錄〜/ .ssh(該目錄可能已經存在,可以):

 a@A:~> ssh b@B mkdir -p .ssh b@B's password: 

最后,將a的新公鑰附加到b@B:.ssh/authorized_keys ,最后一次輸入b的密碼:

 a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys' b@B's password: 

從現在開始,您可以使用密碼從A到B以B身份登錄B:

 a@A:~> ssh b@B 

除此之外,守護PHP進程以使其在后台維護其會話是一個壞主意:

  1. PHP對此不利。
  2. 第二種情況發生:斷電,重啟,...,您的設置不見了。 到那時,您可能已經忘記了這樣做。

暫無
暫無

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

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