Como uso o ssh ProxyCommand para conectar-me ao servidor MySQL remoto atrás do Bastion Host?

Como uso o ssh ProxyCommand para conectar-me ao servidor MySQL remoto atrás do Bastion Host?

Três máquinas estão envolvidas aqui.

  1. Localhost onde faço meu desenvolvimento. Também conhecido como laptop.
  2. Host Bastion onde você deve se conectar primeiro. Também conhecido como salto.
  3. 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 jumpe 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>'.

fonte

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

informação relacionada