[英]SSH connection via PHP - Laravel
我將嘗試盡可能清楚地解釋我的問題,如果您不明白我的意思,請隨時問我更精確的問題,請原諒我的英語不是我的母語。
我想做的事情看起來很簡單。 假設我有 2 個服務器:S1 和 S2。
S1是我安裝並運行 Laravel 5.5 的服務器。
S2是我有多個 PHP 腳本的服務器。
我想通過單擊 Laravel 應用程序中的一個按鈕來運行一個 PHP 腳本(在 S2 上)。
我要運行的命令是php theNameOfMyFiles
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/'
]
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
。
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 [...]
與我在命令行中執行命令時收到的消息相同,但它沒有創建文件夾。
我的想法不多了,我已經在谷歌上搜索了幾個小時,但我找不到如何解決我的問題或任何其他方式來做我想做的事。
如果您需要更高的精度,請隨時詢問。
如果您確實可以通過“嘗試 2”登錄,則應該以不同的方式運行代碼。 使用您的 ssh 命令附加您的命令。 您現在正在做的是首先運行 ssh(可能掛起),然后在 ssh 完成時運行“mkdir”。 反而:
SSH::into('S1')->run(['ssh -tt -p 2222 myRemoteUser@myRemoteIp "cd && mkdir testDir"'])
(我還添加了cd
以確保您位於主目錄中。
通過使用 ip 、端口和 ssh 密碼,可以按照以下步驟使用 ssh。
您的 ssh cmd promt 將啟動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.