Привет всем
Я попытаюсь объяснить мою проблему как можно более ясно, не стесняйтесь спрашивать меня более точно, если вы не поняли, что я имел в виду, и простите мой английский, это не мой родной язык.
Моя цель
То, что я хочу сделать, выглядит просто. Допустим, у меня есть 2 сервера: S1 и S2.
S1 - это сервер, на котором у меня установлен и работает Laravel 5.5.
S2 - сервер, на котором у меня есть несколько PHP-скриптов.
Я хочу запустить скрипт PHP (который находится на S2) простым нажатием кнопки в моем приложении Laravel.
Команда, которую я хочу выполнить: php theNameOfMyFiles
Вещи, которые вы должны знать
- В командной строке я могу подключиться через SSH к S2 через S1:
ssh -tt -p 2222 myRemoteUser@myRemoteIp
. Это работает правильно.
- Большая часть моего теста покажет некоторые попытки создания папки, потому что легче увидеть, была ли создана папка, чем проверять, запущен ли скрипт.
Мои разные попытки
Чтобы достичь этой цели, я попробовал кучу вещей. Прежде всего, я использую Laravelcollective SSH 5.2 , чтобы иметь возможность использовать SSH из моего приложения Laravel.
Мой файл конфигурации 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, используя свой личный / открытый ключ SSH в поле keytext , но я все еще получаю ту же ошибку.
Я пытался указать путь к своим ключам в поле 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 [...]
, то же самое сообщение, которое я получаю, когда выполняю команду в командной строке, но это не создание папки.
Помогите мне, пожалуйста
У меня заканчиваются идеи, я часами гуглял, но не могу найти, как решить мою проблему или любой другой способ делать то, что я хочу, делать то, что я хочу.
Если вам нужна дополнительная точность, не стесняйтесь спрашивать.
Редактирование
- Я пробовал немного другого синтаксиса, но безуспешно. Я все еще открыт для любых предложений, я попробую следующее, что сказал Даммол (проверьте, открыт ли порт 2222 на обоих концах)