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?