php - 通过 PHP 的 SSH 连接 - Laravel

标签 php bash laravel laravel-5 ssh

大家好

我将尝试尽可能清楚地解释我的问题,如果您不明白我的意思,请随时问我更精确的问题,请原谅我的英语,这不是我的母语。


我的目标

我想做的事情看起来很简单。假设我有 2 个服务器:S1 和 S2。
S1 是我安装并运行 Laravel 5.5 的服务器。
S2 是我有多个 PHP 脚本的服务器。
我想通过简单地单击我的 Laravel 应用程序中的按钮来运行 PHP 脚本(位于 S2 上)。
我要运行的命令是 php theNameOfMyFiles


你必须知道的事

  1. 在命令行中,我可以通过 S1 在 SSH 中连接到 S2:ssh -tt -p 2222 myRemoteUser@myRemoteIp。这工作正常。
  2. 我的大部分测试都会展示一些文件夹创建尝试,因为查看文件夹是否已创建比检查脚本是否正在运行更容易。

我的不同尝试

为了达到这个目标,我尝试了很多东西。首先,我正在使用 Laravelcollective SSH 5.2能够在我的 Laravel 应用程序中使用 SSH。
我的配置文件 config/remote.php,这是我指定远程服务器连接的地方:

return [
    default' => 'S1',
   'connections' => [
    'S1' => [
        'host'      => '127.0.0.1',
        'username'  => 'myUsername',
        'password'  => 'myPassword',
        'key'       => '',
        'keytext'   => '',
        'keyphrase' => '',
        'agent'     => '',
        'timeout'   => 10,
    ],
    'S2' => [
        'host'      => 'myRemoteIP',
        'username'  => 'myRemoteUser',
        'port'      => '2222',
        'password'  => '',
        'key'       => '',
        'keytext'   => '',
        'keyphrase' => '',
        'agent'     => '',
        'timeout'   => 30,
        'directory' => '/home/myRemoteUser/'
    ]

尝试1

SSH::into('S2')->run(['mkdir imAtestDirectory']);

每次我尝试使用 SSH::into('S2') 时,我都会收到 Unable to connect to remote server RuntimeException。

我尝试不使用任何 SSH key ,在 keytext 字段中使用我的私有(private)/公共(public) SSH key ,但我仍然遇到同样的错误。

我试图将我的 key 的路径放在 key 字段中,但它说文件 ~/.ssh/mykey 不存在。

将我的 key 移到另一个地方也不起作用,我再次收到无法连接到远程服务器

尝试2

SSH::into('S1')->run(['ssh -tt -p 2222 myRemoteUser@myRemoteIp', 'mkdir testDir'])

我试图准确地重现我在命令行中所做的事情,因为我知道这行得通。我觉得我正在连接到 S2,当我查看 SSH 命令返回的内容时,我得到了 [...] Debian GNU/Linux 系统中包含的程序是免费软件 [.. .] 这与我在命令行中执行命令时收到的消息相同,但它没有创建文件夹。


请帮帮我

我的想法已经用完了,我已经在谷歌上搜索了几个小时,但我找不到如何解决我的问题,也找不到任何其他方法来做我想做的事。

如果您需要更高的精度,请随时询问。


编辑

  1. 我一直在尝试其他几种语法,但都没有成功。我仍然对任何建议持开放态度,接下来我会尝试 Dammeul 所说的(检查端口 2222 是否在两端打开)

最佳答案

如果您实际上可以通过“Try 2”登录,您应该以不同的方式运行代码。将您的命令附加到您的 ssh 命令。您现在正在做的是首先运行 ssh(可能挂起),然后在 ssh 完成时运行“mkdir”。相反:

SSH::into('S1')->run(['ssh -tt -p 2222 myRemoteUser@myRemoteIp "cd && mkdir testDir"'])

(我还添加了 cd 以确保您位于主目录中。

关于php - 通过 PHP 的 SSH 连接 - Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52079055/

相关文章:

linux - 当 rsync 检测到文件时运行附加命令

php - 请求类 Laravel 5.2

php - 使用 shell_exec() 重启服务器?

php - 如何在div中加载CKEditor?

bash - 带大括号的 bash 循环?

linux - 计算日志文件中的特定行数

laravel - 什么是 Laravel 特征模式?

php - Laravel 的 utf8 编码问题

php - 两个日期范围将所有日期输入数据库

php - 正则表达式模式 'pL' 有什么作用?