Para a conexão entre os bancos de dados criaremos um túnel SSH. Assim a sincronização ficará mais segura e não precisaremos deixar a porta do MySQL com acessos externos. Nos exemplos vamos considerar esta sincronização unilateral. Para fazer uma sincronização bilateral, basta aplicar o tunelamento SSH em ambos os lados. Como estamos supondo uma sincronização unilateral, vamos considerar o cliente como a máquina que vai sincronizar seu banco com o servidor. Vale ressaltar que esta parte é opcional, caso não haja necessidade de transferir os dados de maneira segura basta ignorar esta parte.
Basicamente iremos mapear uma porta do computador cliente para que ao entrarmos, estejamos acessando uma porta do servidor (no caso, a porta do MySQL, 3306). Toda esta conexão será feita através de SSH. Portanto, na realidade não estamos acessando diretamente a porta 3306 do servidor, e sim a porta 22. Assim que criarmos esta conexão, teremos acesso ao MySQL como se estivéssemos dentro do servidor.
Se executarmos o comando abaixo, teremos um tunelamento SSH entre duas máquinas. Não convém a este tutorial explicar como funciona cada parâmetro abaixo. Para isto, basta verificar neste site* o motivo de cada parâmetro.
# ssh -f -L local-port:remote-address:remote-port login-name sleep 60 >> logfile
Sendo que local-port é a porta local (do cliente) a qual queremos acessar diretamente no servidor, remote-address:remote-port é o endereço do servidor com a porta a qual acessaremos o MySQL. O SSH mapeará este endereço com esta porta na local-port do cliente, portanto aqui colocaremos 127.0.0.1:3306 que é o endereço do MySQL de dentro do servidor, e login-name é o login usado para conectar no servidor (Por exemplo root@ServerAddress).
Porém toda vez que executarmos esse comando ele pedirá a senha do servidor e isto não é interessante para a aplicação. Para não termos que digitar esta senha a cada conexão, basta criarmos uma chave DSA no cliente e colocarmos no servidor. Assim o servidor sempre aceitará conexão vinda da máquina que gerou a chave.
Para isso, basta executarmos os seguintes comandos no cliente:
# ssh-keygen -t dsa -f ~/.ssh/id_dsa
# cat ~/.ssh/id_dsa.pub | ssh login-name 'cat - >> ~/.ssh/authorized_keys'
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
Na primeira linha estamos criando uma chave DSA e armazenando em id_dsa. Neste caso estamos usando o parâmetro DSA devido ao suporte ao SSH versão 2. Se seu sistema suporta somente o SSH versão 1, troque esta opção por rsa1.
Na segunda e terceira linha, colocamos a chave dentro do arquivo de chaves autorizadas no cliente e no servidor. login-name é o login do servidor, conforme já informado acima.
Repita o comando para criar o tunelamento e repare que não será pedida a senha novamente.
Referência:
PHP, MySQL and SSH Tunneling (Port Forwarding) « The Metric System