%20ao%20servidor%20remoto%20usando%20a%20chave%20privada%20da%20AWS%3F.png)
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:
Rubimina:Tentando fazer a depuração do lado do servidor:
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:
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 mysql
banco 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 9999
na 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 ssh
opçã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:
atualizar:veraquipara uma discussão detalhada sobre como conectar-se ao sequel pro usando tunelamento ssh