In this article, it demonstrates you how to config SSH to run WP-CLI from remote server via a client.
Before you start, make sure WP-CLI and SSH are installed on both the client machine and the remote server.
Check whether WP-CLI is available on a remote server.
$ php wp-cli.phar --info
For convenience, rename it to
wp,make it executable and move it to somewhere in your path.
$ chmod +x wp-cli.phar $ sudo mv wp-cli.phar /usr/jane/bin/wp
Then you can run it like below.
$ wp --info
Generate SSH keys
If you do not have your SSH keys yet on your client, use
ssh-keygen tool to generate a pair keys.
$ ssh-keygen -o Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/john/.ssh/id_rsa): Created directory '/c/Users/john/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/john/.ssh. Your public key has been saved in /c/Users/john/.ssh/id_rsa.pub. The key fingerprint is: c0:72:36:8e:d7:f1:aa:75:s3:53:96:d8:49:85:36:e3 email@example.com
In the process, it will ask you whether to save the key in the default file, press enter to use the default file. Then it ask you whether to set a passphrase, leave it empty if you do not want a password for the key.Then a pair key will be generated, one(id_rsa) is private key, the other(id_rsa.pub) is public key.
Then just append the content of the public key file (.pub file) to the remote server’s
# If you have send the public key file to the remote server's home directory, # use below command to append its content to authorized_keys. $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
In the client, edit the SSH’s configuration file
~/.ssh/config. If it does not exist, create it and add below content to config the remote server to connect over SSH.
Host my_server HostName xx.xx.xx.xx Port 22 User jane IdentityFile c:usersjohn.sshid_rsa
The first line config the remote server’s name, here we name it “my_server_name”. The following lines config its IP, port, user as well as the private key file path on your client. When connecting to the remote server, it will be used for authorization.
WP-CLI use a config file of YAML format. You need to create a file
/home/john/.wp-cli/config.yml in the client if it does not exist. WP-CLI will automatically find it in the filesystem.
Run WP-CLI remotely on client
If you just run WP-CLI for remote server, add below content to the YAML file.
# Global parameters for remote WP-CLI ssh: my-server:/home/jane
Run WP-CLI locally and remotely on the same client
If you want to run WP-CLI both for local WordPress and that on remote server, use an alias for remote access in the WP-CLI config file.
# Global default parameters for local WP-CLI path: C:xampphtdocswordpress user: xxx # Global default Parameters for remote WP-CLI @svr: ssh: my-server:/home/jane
For local WP-CLI, config the client’s WordPress’s path and WordPress user name.
For remote WP-CLI, config SSH connection information as an alias
my-server is the server name configured in the SSH config file,
/home/jane is the directory on remote server, when running remotely it automatically change to that directory.
Note: The path for WordPress on the remote server can be configured on remote’s WP-CLI config file.
# Global default parameters path: /opt/wordpress/htdocs
Run WP-CLI locally and remotely on the same client.
# Local WP-CLI info $ wp --info # Remote WP-CLI info $ wp @svr info