簡體   English   中英

通過 PHP 的 SSH 連接 - Laravel

[英]SSH connection via PHP - Laravel

大家好

我將嘗試盡可能清楚地解釋我的問題,如果您不明白我的意思,請隨時問我更精確的問題,請原諒我的英語不是我的母語。


我的目標

我想做的事情看起來很簡單。 假設我有 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 密鑰的情況下使用密鑰文本字段中的私有/公共 SSH 密鑰,但我仍然遇到相同的錯誤。

我試圖將我的密鑰的路徑放在密鑰字段中,但它說文件~/.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 [...]與我在命令行中執行命令時收到的消息相同,但它沒有創建文件夾。


請幫幫我

我的想法不多了,我已經在谷歌上搜索了幾個小時,但我找不到如何解決我的問題或任何其他方式來做我想做的事。

如果您需要更高的精度,請隨時詢問。


編輯

  1. 我一直在嘗試其他一些語法,但沒有成功。 我仍然願意接受任何建議,接下來我會嘗試 Dammeul 所說的(檢查端口 2222 是否在兩端都打開)

如果您確實可以通過“嘗試 2”登錄,則應該以不同的方式運行代碼。 使用您的 ssh 命令附加您的命令。 您現在正在做的是首先運行 ssh(可能掛起),然后在 ssh 完成時運行“mkdir”。 反而:

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

(我還添加了cd以確保您位於主目錄中。

通過使用 ip 、端口和 ssh 密碼,可以按照以下步驟使用 ssh。

  1. 打開cmd提示符。
  2. 輸入 ssh root@191.123.2.3 -p 23202(ip - 191.123.2.3,端口 - 23202)。
  3. 如果要求使用 yes/no 進行身份驗證,請輸入 yes 並回車。
  4. cd /var/www/html/

您的 ssh cmd promt 將啟動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM