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

1

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

Sequel pro: Tentando se conectar a um servidor mysql remoto via ssh:

Rubymine:Tentandofazeradepuraçãodoladodoservidor:

Com o Amazon AWS, para conectar usando o SSH , você precisa de uma chave privada e o comando de conexão é algo assim:

ssh -i %privateKeyFileName.pem% ubuntu@server

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

Atualização: sequel pro pode ser feito nativamente .. como para rubimina .. i comecei fazendo ssh tunneling .. então aqui estão os passos:

primeiro: iniciei um processo de túnel ssh na minha máquina, para que qualquer solicitação feita à 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: seguindo as estas instruções .. agrupei o debase debug gem com meu projeto rails .. e rodei o seguinte comando:

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

third: Eu alterei as configurações de depuração de produção em minha rubymine e fiz com que apontasse para a porta 3000 em meu localhost da seguinte forma:

fourth: iniciei o processo de depuração a partir da rubimina.

problem: o processo de depuração foi iniciado .. mas está dizendo que não pode 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 conectar-se diretamente ao mysql db 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 em pensar que estou realmente conectando-o de dentro de aws ...

tecnicamente eu posso fazer a mesma coisa: eu posso criar outro túnel ssh especificamente para o host mysql, mas como instruir o rubymine para conectar aquele túnel para o banco de dados?

    
por abbood 21.12.2013 / 08:32

2 respostas

1

Você está procurando o SSH Tunneling, para permitir que você encaminhe uma porta local (por exemplo, 127.0.0.1:9876 ) para a porta específica no servidor remoto. Encontre os detalhes aqui

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 todas as solicitações feitas para a porta 9999 na máquina local, para a porta 3306 (para o MySQL) no servidor de destino (IP: 51.100.80.10 ) - sintonizadas pela porta SSH em o destino (geralmente porta 22 ).

Com a AWS, isso significa que você precisaria alterar os grupos de segurança na página do EC2 para ativar o acesso SSH ao servidor (o SSH geralmente é executado na porta 22 , portanto é necessário permitir o acesso a esse p) .

    
por 21.12.2013 / 09:17
0

Acontece que o sequelpro já oferece a opção de fornecer uma chave ssh ... (Eu acho que é um bug .. se você clicar na opção ssh e não ver os campos para a chave, clique de volta para um dos as outras duas abas do que clicar novamente em ssh .. e você deverá ver a seguinte tela:

update:consulte aqui para uma discussão detalhada sobre a conexão com o sequel pro usando ssh tunneling

    
por 22.12.2013 / 06:28