我有一个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一样使用代理?
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命令。也许这会给你一个暗示。