Eu uso um script iniciado a partir do crontab: este script cria um túnel ssh para o host postgres remoto, inicia uma sessão no banco de dados postgres remoto usando o binário local do psql e depois mata o túnel uma vez feito.
Por exemplo:
# $REMOTE is the hostname of the remote postgres server
# this tunnel maps the local port 50432 to the remote port 5432 where the
# remote postgres instance is listening
/usr/bin/ssh -nNT postgres@${REMOTE} -L 50432:localhost:5432 &
TUNNELPID=$!
# wait a little for the tunnel to establish itself
sleep 5
# execute the statements in load.sql against the remote database 'remotepgdb'
/usr/local/pgsql/bin/psql -q -h localhost -p 50432 -U remotepguser remotepgdb < ${SCRIPT_PATH}/load.sql
# kill the ssh tunnel
/usr/bin/kill ${TUNNELPID}
Antes de tentar esta técnica, sugiro que o cliente local do psql e o banco de dados remoto do postgres estejam exatamente na mesma versão.