大家好
我将尽可能清楚地解释我的问题,如果你不明白我的意思,请随时问我更精确,并原谅我的英语,这不是我的母语.
我的目标
我想做的事情看起来很简单.假设我有2台服务器:S1和S2.
S1是我安装并运行Laravel 5.5的服务器.
S2是一个服务器,我有多个PHP脚本.
我想通过简单点击我的Laravel应用程序中的按钮来运行PHP脚本(在S2上).
我想运行的命令是php theNameOfMyFiles
你必须知道的事情
>在命令行中,我可以通过S1连接SSH到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’)我都会得到一个无法连接到远程服务器RuntimeException.
我尝试没有任何SSH密钥,在keytext字段中使用私有/公共SSH密钥,但我仍然得到相同的错误.
我试图将关键字段中的路径放到我的键中,但它说文件〜/ .ssh / mykey不存在.
将我的密钥移动到另一个地方也不起作用,我无法再次连接到远程服务器.
试试2
SSH :: into(‘S1’) – > run([‘ssh -tt -p 2222 myRemoteUser @ myRemoteIp’,’mkdir testDir’])
我试图在命令行中重现我正在做的事情,因为我知道它可以工作.我觉得我正在连接到S2,当我正在查看SSH命令返回的内容时我正在[…] Debian GNU / Linux系统附带的程序是免费软件[…]当我在命令行中执行命令时,我得到的消息是相同的,但它不是创建文件夹.
请帮帮我
我的想法已经不多了,我一直在谷歌搜索几个小时,但我找不到如何解决我的问题或任何其他方式做我想做的事情.
如果您需要更高的精度,请随时询问.
编辑
>我一直在尝试其他语法,但没有成功.我仍然对任何建议持开放态度,接下来我会尝试Dammeul所说的(检查端口2222两端是否打开)
最佳答案 如果您实际上可以通过“尝试2”登录,则应该以不同方式运行代码.使用ssh命令附加命令.你现在正在做的是首先运行ssh(可能会挂起)然后在ssh完成时运行“mkdir”.代替:
SSH::into('S1')->run(['ssh -tt -p 2222 myRemoteUser@myRemoteIp "cd && mkdir testDir"'])
(我还添加了cd以确保您在主目录中.