[英]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進程以使其在后台維護其會話是一個壞主意:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.