web-dev-qa-db-fra.com

Alias ​​WP-CLI: se connecter avec un proxy ssh

J'ai un fichier wp-cli.yml qui définit un alias pour un hôte distant:

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

Cela me permettrait normalement d'utiliser wp @Origin command pour exécuter des commandes distantes sur l'autre hôte. Cependant, dans un cas, l'hôte distant n'est visible que via un proxy SSH. Mon système a donc une entrée de configuration SSH dans ~/.ssh/config:

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

Cela lui indique de se connecter d'abord au serveur proxy, puis de se connecter au serveur de destination. Je peux me connecter à cette boîte en une seule étape en tapant simplement:

$ ssh myserver.example.com

Cependant, lorsque je tente la même chose avec WP-CLI, cela ne fonctionne pas:

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

Je conclus que WP-CLI ne regarde pas ma configuration SSH ou ne comprend pas la directive ProxyCommand.

Puis-je ajouter quelque chose à la commande wp-cli.yml config ou à la commande wp pour lui faire utiliser un proxy de la même façon que SSH?

3
Marcus Downing

J'ai créé la configuration simillar à la vôtre et le proxy fonctionne pour moi. Ma configuration ressemble à:

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

Je traite ma machine locale vagabonde comme un proxy et je souhaite exécuter la commande sur le serveur de production.

Mon fichier wp-cli.yml ressemble à ceci:

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

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

J'exécute la commande wp et, en retour, je récupère les données de mon serveur de production.

wp @prod config get

Je sais que le proxy fonctionne, car si je supprime la section Host vagrant du fichier ~/.ssh/config, je ne peux exécuter aucune commande et, en retour, une erreur se produit.

Vous pouvez essayer d’installer wp-cli localy en utilisant composer

composer require wp-cli/wp-cli

echocommande échappée variable et exécute la commande comme ça:

./vendor/bin/wp @prod config get

Cette variable doit contenir votre commande ssh complète. Cela vous donnera peut-être un indice sur ce qui se passe.

2
kierzniak