解決したいこと
Docker内のLaravelで以下のコマンドを利用し、
# sail artisan remote:select
こちらのようなソースコードの中身を通したいと思っております。
public function handle() { $this->line("-----------------------------"); $this->line("start remote_mysql test connection."); $this->line("-----------------------------"); dispatch(new CreateTunnel()); $user = DB::connection("mysql_tunnel")->table("user")->get(); dd($user); $this->line("-----------------------------"); $this->line("end remote_mysql test connection."); $this->line("-----------------------------"); return Command::SUCCESS; }
この時の、mysql_tunnelのコネクション先がLaravelの存在しているサーバーとは別のネットワーク上にあるMySQLサーバーです。
stechstudio/laravel-ssh-tunnel
というライブラリを使えば外部サーバーへssh通信で繋げることができ、Eloquentのコネクションを繋げることが可能なのではないか?と考えました。
そこの設定どおりやっていざコードを実行したところ、以下のようなエラーメッセージが発行されました。
ErrorException Could Not Create SSH Tunnel with command: /usr/bin/ssh -o StrictHostKeyChecking=no -N -i ./resources/ssh/id_rsa -L 3306:127.0.0.1:3306 -p {port} {user}@{ip-address} Check your configuration. at vendor/stechstudio/laravel-ssh-tunnel/src/Jobs/CreateTunnel.php:72 68▕ // Wait a bit until next iteration 69▕ usleep(config('tunneler.wait')); 70▕ } 71▕ ➜ 72▕ throw new \ErrorException(sprintf("Could Not Create SSH Tunnel with command:\n\t%s\nCheck your configuration.", 73▕ $this->sshCommand)); 74▕ } 75▕ 76▕ ...
コンフィグの問題だといわれてしまっているので設定方法が悪いのかと思い、問題の切り出しのため以下のコマンドをLaravelの入っているサーバーにログインしたうえで実行したところ、普通に対象のサーバーにアクセスすることができてしまいました。
/usr/bin/ssh -o StrictHostKeyChecking=no -i ./resources/ssh/id_rsa -L 3306:127.0.0.1:3306 -p {port} {user}@{ip-address}
違いは「-N」を入れていないことと、CreateTunnelクラスを介さず手動でコードを実行していることくらいだと思いますが、
これらの違いがエラーになる理由がわかりません。
手がかり程度でもいいので何か原因など思い当たる節があればどなたか教えていただけないでしょうか?
回答1件
あなたの回答
tips
プレビュー