Como conectar aplicativos locais (ou seja, rubymine, prosequel) ao servidor remoto usando a chave privada da AWS?

Como conectar aplicativos locais (ou seja, rubymine, prosequel) ao servidor remoto usando a chave privada da AWS?

Programas que permitem conexões remotas (geralmente em ssh) normalmente solicitam um nome de usuário/senha para se conectar a um servidor remoto: veja os exemplos abaixo desequelaerubimina, respectivamente:

Sequela profissional:Tentando conectar-se a um servidor MySQL remoto via ssh:

janela de conexão sequelpro

Rubimina:Tentando fazer a depuração do lado do servidor: janela de configuração de conexão rubytime

Com Amazon AWS,para se conectar usando SSHvocê precisa de uma chave privada e o comando de conexão é mais ou menos assim:

ssh -i %privateKeyFileName.pem% ubuntu@server

Pergunta:Como incluo esse arquivo privado para poder conectar-me com êxito usando aplicativos como prosql ou rubymine?


Atualizar:sequência pro pode ser feitanativamente.. quanto ao rubymine.. comecei fazendotúnel ssh.. então aqui estão as etapas:

primeiro:Iniciei um processo de túnel ssh na minha máquina, para que qualquer solicitação feita à minha porta localhost:9999 seja encaminhada para o aws ip na porta 3000:

ssh -l ubuntu -i '/path/to/cert/file/certFile.cer' -L 9999:%aws.ip%:3000 %aws.ip%

segundo:seguindoessesinstruções .. eu empacotei orebaixardebug gem com meu projeto Rails.. e executei o seguinte comando:

rdebug-ide --port 3000 -- rvmsudo thin start -p 3000 -e production

terceiro:Alterei as configurações de depuração de produção em meu rubymine e apontei para a porta 3000 em meu host local assim:

insira a descrição da imagem aqui

quarto:Iniciei o processo de depuração do rubymine.

problema:o processo de depuração foi iniciado .. mas está me dizendo que não é possível se conectar ao servidor mysql:

/Users/abdullahbakhach/.rvm/rubies/ruby-1.9.3-p484/bin/ruby -e at_exit{sleep(1)};$stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /Users/abdullahbakhach/.rvm/gems/ruby-1.9.3-p484/gems/ruby-debug-ide-0.4.17/bin/rdebug-ide --port 58053 --dispatcher-port 58054 -- /Users/abdullahbakhach/dev/ruby/icars-web-application-veritopia/script/rails server -b 0.0.0.0 -p 9999 -e production
Fast Debugger (ruby-debug-ide 0.4.17, ruby-debug-base19x 0.11.30.pre12) listens on 127.0.0.1:58053
=> Booting Thin
=> Rails 3.2.13 application starting in production on http://0.0.0.0:9999
=> Call with -d to detach
=> Ctrl-C to shutdown server
/Users/abdullahbakhach/.rvm/gems/ruby-1.9.3-p484@global/gems/actionpack-3.2.13/lib/action_dispatch/http/mime_type.rb:102: warning: already initialized constant PDF
Uncaught exception: Host '78.111.131.68' is not allowed to connect to this MySQL server
Exiting
    /Users/abdullahbakhach/.rvm/gems/ruby-1.9.3-p484/gems/mysql2-0.3.14/lib/mysql2/client.rb:67:in `connect'

Eu sei que se eu tentar me conectar diretamente ao mysqlbanco de dados hospedado na máquina AWS diretamente de um host aleatório, ele rejeitará essa conexão pelos mesmos motivos. A idéia é enganar o banco de dados mysql fazendo-o pensar que estou realmente me conectando a ele de dentro do aws.

tecnicamente, posso fazer a mesma coisa: posso criar outro túnel ssh especificamente para o host mysql, mas como instruo o Rubymine a se conectar a esse túnel para o banco de dados?

Responder1

Você está procurando túnel SSH, para permitir encaminhar uma porta local (por exemplo 127.0.0.1:9876) para a porta específica no servidor remoto. Encontre os detalhesaqui

Aqui está a essência:

ssh -l <SERVER_USER> -i "<SERVER_SSH_KEY>" \ 
    -L <local-port-to-listen>:<remote-host>:<remote-port> 
    <remote-host>

e aqui está um exemplo:

ssh -l ubuntu -i "/home/myuser/awskey.pem" -L \
    9999:51.100.80.10:3306 51.100.80.10

No exemplo acima, encaminhamos quaisquer solicitações feitas para a porta 9999na máquina local, para a porta 3306(para MySQL) no servidor de destino (IP: 51.100.80.10) - encapsuladas através da porta SSH no destino (normalmente port 22).

Com a AWS, isso significa que você precisaria alterar os grupos de segurança na página EC2 para permitir o acesso SSH ao servidor (o SSH normalmente é executado em port 22, então você precisa permitir o acesso a esse p).

Responder2

Acontece que o sequelpro já oferece a opção de fornecer uma chave ssh.. (acho que é um bug.. se você clicar na sshopção e não ver os campos da chave, clique novamente em uma das outras duas guias e clique novamente em ssh.. e você deverá ver a seguinte tela:insira a descrição da imagem aqui

atualizar:veraquipara uma discussão detalhada sobre como conectar-se ao sequel pro usando tunelamento ssh

informação relacionada