Supondo que você executou este comando: ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -N
conforme descrito na postagem que você vinculou.
Uma análise do comando:
ssh
: isso é bastante autoexplicativo. Invoca ssh
.
-f
: (Da man ssh
página)
Solicita que ssh vá para segundo plano antes da execução do comando. Isso é útil se o ssh vai pedir senhas ou frases-senha, mas o usuário quer em segundo plano.
Essencialmente, envie ssh
para segundo plano depois de inserir qualquer senha para estabelecer a conexão; ele retorna o prompt do shell para você em em localhost
vez de fazer o login no remote-host
.
user@mysql-server.com
: o servidor remoto no qual deseja fazer login.
-L 3306:mysql-server.com:3306
: Esta é a parte interessante. -L
(da man ssh
página):
[bind_address:] port: host: hostport Especifica que a porta fornecida no host local (cliente) deve ser encaminhada para o host e a porta fornecidos no lado remoto.
Assim, -L 3306:mysql-server.com:3306
liga a porta local3306
à porta remota 3306
no host mysql-server.com
.
Quando você se conecta à porta local3306
, a conexão é encaminhada pelo canal seguro para mysql-server.com
. O host remoto , mysql-server.com
em seguida, conecta-se mysql-server.com
na porta 3306
.
-N
: não execute um comando. Isso é útil para "apenas encaminhar portas" (citando a página do manual).
Este comando afeta alguma coisa no servidor?
Sim, ele estabelece uma conexão entre localhost e mysql-server.com na porta 3306 .
E como faço para fechar este túnel ...
Se você já usou -f
, notará que o ssh
processo que você abriu fica em segundo plano. O método mais agradável de fechá-lo é executar ps aux | grep 3306
, encontrar o pid
de ssh -f ... -L 3306:mysql-server.com:3306 -N
, e kill <pid>
. (Ou talvez kill -9 <pid>
; esqueci se apenas kill
funciona). Isso tem o belo benefício de não matar todas as suas outras ssh
conexões; se você tem mais de um, restabelecê-los pode ser uma pequena ... dor.
... porque agora não consigo usar meu mysql local corretamente.
Isso ocorre porque você efetivamente "capturou" o processo local mysql
e encaminhou para o processo remoto qualquer tráfego que tentasse se conectar a ele mysql
. Uma solução muito mais agradável seria não usar a porta local 3306 no encaminhamento de porta. Use algo que não seja usado, como 33060. (Números mais altos geralmente são menos usados; é muito comum encaminhar uma combinação como esta: "2525-> 25", "8080-> 80", "33060-> 3306" ou semelhante. Torna a lembrança um pouco mais fácil).
Então, se você usou ssh -f user@mysql-server.com -L 33060:mysql-server.com:3306 -N
, você apontaria sua função Zend connect-to-mysql para uma localhost
porta 33060
, que se conectaria a uma mysql-server.com
porta 3306
. Obviamente , você ainda pode se conectar a uma localhost
porta 3306
, portanto, ainda pode usar o mysql
servidor local .