
Três máquinas estão envolvidas aqui.
- Localhost onde faço meu desenvolvimento. Também conhecido como laptop.
- Host Bastion onde você deve se conectar primeiro. Também conhecido como salto.
- Servidor MySQL ao qual desejo me conectar. Também conhecido como DB.
Minha chave pública ssh está em /home/myusername/.ssh/authorized_keys no salto.
Meu ~/.ssh/config tem isto:
Host jump
HostName jump.domain.com
User myusername
IdentityFile ~/.ssh/myprivatekey
Eu posso ssh jump
e pulo bem.
Qual comando ssh eu preciso executar no terminal do laptop para poder conectar do laptop ao banco de dados via
mysql -h 127.0.0.1 -P 3308
Preciso de um túnel SSH e um encaminhamento de porta, mas ainda não consegui corrigir a sintaxe. Quero usar 3308 para banco de dados de produção e 3307 para banco de dados de teste e estou executando o banco de dados MySQL local em 3306, e é por isso que o encaminhamento de porta para portas MySQL não padrão.
Responder1
Isto é o que acabei usando:
ssh -f -L3307:staging.mysql-server.com:3306 jump sleep 10000000
ssh -f -L3308:production.mysql-server.com:3306 jump sleep 10000000
que é dehttp://csce.uark.edu/~kal/info/private/ssh/ch09_02.htmseção 9.2.6
Nota: Ao contrário da pergunta que fiz, nenhum proxyCommand é necessário, apenas a combinação certa de opções de linha de comando ssh.
Responder2
O comando é ssh -fL <mysql db port>:<mysql server url>:<mysql db port> <username>@<bastian url> '<remote command>'
.
Responder3
Você pode usar o seguinte .ssh/config assumindo que você se conecta da máquina A a C, através da máquina B
Host B
User username_on_b
Hostname ip_of_b
IdentityFile ~/.ssh/key_for_b
Host C
User username_on_c
Hostname ip_of_c
IdentityFile ~/.ssh/key_for_c
Localforward 3308 ip_of_your_sql_server:3306
Proxyjump B
# or old-fashion
# Proxycommand ssh B nc %h %p
Então você simplesmente digita de A :
ssh C
Então de A você pode
mysql -P 3308 -H localhost