【发布时间】:2019-02-04 08:06:28
【问题描述】:
大家好
我将尽可能清楚地解释我的问题,如果您不明白我的意思,请随时问我更准确的意思,并原谅我的英语不是我的母语。
我的目标
我想做的事情看起来很简单。假设我有 2 台服务器:S1 和 S2。
S1 是我安装并运行 Laravel 5.5 的服务器。
S2 是我有多个 PHP 脚本的服务器。
我想通过在我的 Laravel 应用程序中单击一个按钮来运行一个 PHP 脚本(在 S2 上)。
我要运行的命令是php theNameOfMyFiles
你必须知道的事情
- 在命令行中,我可以在 SSH 中通过 S1 连接到 S2:
ssh -tt -p 2222 myRemoteUser@myRemoteIp。这工作正常。 - 我的大部分测试都会显示一些创建文件夹的尝试,因为这样更容易查看文件夹是否已创建,而不是检查脚本是否正在运行。
我的不同尝试
为了达到这个目标,我尝试了很多方法。首先,我使用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 密钥,在 keytext 字段中使用我的私有/公共 SSH 密钥,但我仍然遇到同样的错误。
我试图将我的密钥路径放在 key 字段中,但它显示文件 ~/.ssh/mykey 不存在。
将我的钥匙移动到另一个地方也不起作用,我又得到了Unable to connect to remote server。
试试 2
SSH::into('S1')->run(['ssh -tt -p 2222 myRemoteUser@myRemoteIp', 'mkdir testDir'])
我试图准确地重现我在命令行中所做的事情,因为我知道这可以工作。我觉得我正在连接到 S2,当我查看 SSH 命令返回的内容时,我得到了[...] The programs included with the Debian GNU/Linux system are free software [...],这与我在命令行中执行命令时得到的消息相同,但是它不是创建文件夹。
请帮帮我
我的想法已经用完了,我已经在谷歌上搜索了几个小时,但我找不到如何解决我的问题或任何其他方式来做我想做的事。
如果您需要更精确的信息,请随时询问。
编辑
- 我一直在尝试其他几种语法,但没有成功。我仍然愿意接受任何建议,接下来我会尝试 Dammeul 所说的(检查端口 2222 是否在两端都打开)
【问题讨论】:
-
2222端口是否两端开放?
-
我可以使用来自 S1 的
telnet myRemoteHost 2222。我不能使用 S2 中的telnet myHost 2222。 -
听起来 S2 上的端口可能已关闭。值得检查你是否可以打开它/看看它是否打开
-
当我在命令行中使用
ssh -tt -p 2222 myRemoteUser@myRemoteIp时也不会成为问题吗? (因为这是完美的工作......) -
您不会使用您的公钥进行身份验证。 Web 服务器以什么用户身份运行?它可以访问您的密钥吗?
标签: php bash laravel laravel-5 ssh