Não limpar, se tivermos a configuração correta. Então eu assumo que firewallhost
é o host acessível a partir do seu Workbench. Portanto, é necessário criar uma porta aberta neste servidor, que pode acessar o servidor mysql 'real' por trás desse firewall.
Não há problema em configurar um túnel ssh persistente no firewallhost
. Isso é feito assim em firewallhost
ssh -L localhost:33060:localhost:3306 someshelluser@databasehost
Isto cria um túnel openssh para localhost (não público em qualquer nic) na porta 33060 (ou qualquer porta que você tenha livre aqui) no firewallhost
que está em retorno conectado através deste túnel com a porta 3306 (novamente no localhost mas na máquina databasehost
) porque está conectado como someshelluser em databasehost
.
E agora você pode se conectar com o ambiente de trabalho:
Para ter o túnel ssh em firewallhost
persistente, você pode iniciá-lo da seguinte forma com um arquivo de chaves (para acessar databasehost
) e uma tela de processo separado através de. Isso pode ser colocado em seu rc.local ou o que você usa em firewallhost
.
screen -d -m /usr/bin/ssh -v -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -o "BatchMode=yes" -i /your/.ssh/ssh_host_dsa_key -q -L locahost:33060:localhost:3306 someshelluser@databasehost
Você deve apenas 'imaginar' que tal túnel ssh pode 'transportar' qualquer fluxo de porta de uma máquina para outra, abrindo uma 'nova' porta na máquina que você criar aquele túnel ssh (aqui firewallhost
). Isso pode ser feito até mesmo no nic público de firewallhost
, mas você quer no localhost como você não quer expor sua porta mysql para o público;)
Espero que isso ajude!
ATUALIZAÇÃO:
Ok, como você não tem acesso direto a firewallhost
para criar um túnel persistente, tente de outra forma. Você disse que é capaz de se conectar com o comando proxy. Como você escreveu em linha e não como opção '-o', eu suponho que você tenha isso em seu ssh_config.
Se o seu ssh_config se parece com isto:
Host server
Hostname mysqlserver.example.org
ProxyCommand ssh -W %h:%p firewallhost.example.org
Então você pode tentar o seguinte como ' SSH Hostname ' no ambiente de trabalho. Com chance, você tem permissão para dar ssh params com isso. Eu não testei, mas não é unusal para o aplicativo passar o conteúdo dos campos Hostname diretamente para a chamada ssh.
Nome do host SSH:
-o ProxyCommand="ssh -W %h:%p firewallhost.example.org" mysqlserver.example.org
Isto deve trazê-lo para o seu mysqlserver através do seu host de firewall. A partir daqui, suas configurações do mysql podem ser usadas como se você se conectasse diretamente ao mysqlserver como o ambiente de trabalho está esperando.
UPDATE2:
Como você escreveu, você está na mesma máquina (Ubuntu 14) que é capaz de se conectar ao seu banco de dados mysql por trás de firewallhost
, você deve apenas usar os valores no workbench que você usa no console. O ambiente de trabalho usará seu .ssh / config se você chamar o ambiente de trabalho com o mesmo usuário que o .ssh / config é para.
Finalmente:
O nome do host SSH seria apenas 'targetHost', onde o comando proxy do seu .ssh / config irá encaminhá-lo para 'targetHost' através de 'firewallHost'.
O nome de usuário do SSH é 'username' (de .ssh / config novamente).
O MySQL Hostname deve ser localhost e a porta 3306 - que deve ser exatamente como você faz ao acessar o 'targetHost' por ssh como você escreveu em sua pergunta. Porque o ambiente de trabalho usará esses valores depois de (!) Se conectar por ssh.