WP-CLI别名:使用ssh代理连接

时间:2017-12-05 作者:Marcus Downing

我有一个wp-cli.yml 定义远程主机别名的文件:

@origin:
  ssh: myserver.example.com
  path: /path/to/htdocs
这通常允许我使用wp @origin command 在另一台主机上运行远程命令。然而,在一种情况下,远程主机仅通过SSH代理可见,因此我的系统在~/.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 那里的指令。

有什么我可以添加到wp-cli.yml 配置或wp 命令使其像SSH一样使用代理?

1 个回复
SO网友:kierzniak

我创建了与您类似的配置,代理正在为我工作。我的配置如下所示:

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
我将我的流浪本地计算机视为代理,我想在生产服务器上执行命令。

我的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

composer require wp-cli/wp-cli

echo escaped command 变量并执行如下命令:

./vendor/bin/wp @prod config get

此变量应包含完整的ssh命令。也许这会给你一个暗示。

结束

相关推荐

如何使用wp-cli更新‘ARRAY’选项

我正在尝试编写一个bash脚本来自动将活动站点同步到开发人员站点。我已经解决了一些基本问题,比如导出生产数据库和导入/更新开发站点中的URL,但我需要帮助更新一个将其数据保存为数组的选项。具体来说,我想使用wp-cli.我可以使用wp cli查看选项:$ wp option get woocommerce_stripe_settings array ( \'enabled\' => \'yes\', \'title\' => \'Credit Card (Str