web-dev-qa-db-ja.com

WP-CLIエイリアス:sshプロキシと接続する

リモートホストのエイリアスを定義するwp-cli.ymlファイルがあります。

@Origin:
  ssh: myserver.example.com
  path: /path/to/htdocs

これは通常私がwp @Origin commandを使って他のホスト上でリモートコマンドを実行することを可能にします。しかし、ある場合には、リモートホストはSSHプロキシを通してしか見えないので、私のシステムは~/.ssh/configにSSH configエントリを持っています。

Host myserver.example.com
    ProxyCommand ssh -q -W %h:22 proxyserver.example.com
    ForwardAgent yes

これは、最初にプロキシサーバーに接続し、次にそこから宛先サーバーに接続するように指示します。次のように入力するだけで、そのボックスにワンステップでログインできます。

$ ssh myserver.example.com

しかし、私がWP-CLIで同じことを試みると、うまくいきません。

$ wp @Origin db export --add-drop-table -
Error: Cannot connect over SSH using provided configuration.

私は、WP-CLIが私のSSH設定を見ていないか、そこにあるProxyCommandディレクティブを理解していないと結論づけました。

SSHと同じ方法でプロキシを使用するためにwp-cli.yml configまたはwpコマンドに追加できるものはありますか?

2
Marcus Downing

私はあなたに似た設定を作成しました、そしてプロキシは私のために働いています。私の設定はこんな感じです:

Host production
  HostName xxx.xxx.xxx.xxx
  ProxyCommand ssh -q -W %h:22 vagrant
  ForwardAgent yes

Host vagrant
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /path/to/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  ForwardAgent yes
  LogLevel FATAL

私は私のvagrantローカルマシンをプロキシとして扱っていて、プロダクションサーバー上でコマンドを実行したいのですが。

私のwp-cli.ymlファイルはこんな感じです:

@local:
  ssh: vagrant/var/www/test

@prod:
  ssh: production/var/www/test

私はwpコマンドを実行していますが、その代わりに本番サーバーからデータを取得します。

wp @prod config get

Host vagrantファイルから~/.ssh/configセクションを削除するとコマンドを実行できず、代わりにエラーが発生するため、プロキシが機能していることがわかります。

Composerを使ってwp-cli localyをインストールしてみてください。

composer require wp-cli/wp-cli

echoエスケープされたコマンド variableとそのようなコマンドを実行します。

./vendor/bin/wp @prod config get

この変数はあなたの完全なsshコマンドを含むべきです。多分これはあなたに何が起こっているのかのヒントを与えるでしょう。

2
kierzniak