【问题标题】:PHP Keep SSH session alive/storedPHP保持SSH会话活动/存储
【发布时间】:2015-05-25 20:18:15
【问题描述】:

我正在使用 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');

【问题讨论】:

  • 您真的是指服务器在 2 秒不活动 后断开您的会话吗?或者实际面临什么问题?
  • 我想每 15-20 秒执行一些命令,而不必每次都登录来运行该命令。基本上,这将是一项 cron 作业,每 15-20 秒从设备获取统计信息
  • 那么问题出在哪里?为什么不把它放在 cron 中呢?
  • 我确实在 cron 上有它,但每次运行该功能时我都必须登录。我想避免每 15 秒登录一次。
  • 您无法启动/停止 PHP 脚本并使连接保持活动状态。您必须有一个持久的套接字来保持连接打开,而 PHP 的 pfsockopen 并不能真正胜任这项任务。我猜你可以让脚本永远运行。每次通话后让它休眠 15 秒。此时可能需要 phpseclib 保持活动状态(即休眠 7 秒,发送保持活动状态并再休眠 7 秒)。

标签: php codeigniter ssh phpseclib


【解决方案1】:

在不提示您输入密码的情况下让 SSH 登录的唯一方法是使用公钥加密。

查找SSH login automation。引用该网站以防万一:

你的目标

您想使用 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

现在使用 ssh 在 B 上以用户 b 的身份创建一个目录 ~/.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,而无需密码:

a@A:~> ssh b@B

除此之外,守护 PHP 进程以使其在后台维护其会话是一个坏主意:

  1. PHP 对此很不利。
  2. 发生的第二件事:断电、重新启动,...,您的设置消失了。到那时你可能已经忘记了它会做这样的事情。

【讨论】:

    猜你喜欢
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2012-05-26
    • 2019-12-28
    相关资源
    最近更新 更多