¿Cómo conectar aplicaciones locales (es decir, Rubymine, Prosequel) al servidor remoto utilizando la clave privada de AWS?

¿Cómo conectar aplicaciones locales (es decir, Rubymine, Prosequel) al servidor remoto utilizando la clave privada de AWS?

Los programas que permiten conexiones remotas (generalmente en ssh) generalmente solicitan un nombre de usuario/contraseña para conectarse a un servidor remoto: vea los siguientes ejemplos desecuelaproyrubímina, respectivamente:

Secuela profesional:Intentando conectarse a un servidor mysql remoto a través de ssh:

ventana de conexión secuelapro

Mina de rubí:Intentando realizar la depuración del lado del servidor: ventana de configuración de conexión rubytime

Con AmazonAWS,para conectarse usando SSHnecesita una clave privada y el comando de conexión es algo como esto:

ssh -i %privateKeyFileName.pem% ubuntu@server

Pregunta:¿Cómo incluyo este archivo privado para poder conectarme exitosamente usando aplicaciones como prosql o rubymine?


Actualizar:secuela pro se puede hacernativamente.. en cuanto a Rubymine.. comencé haciendotúnel ssh.. así que aquí están los pasos:

primero:Inicié un proceso de túnel ssh en mi máquina, de modo que cualquier solicitud realizada a mi puerto localhost:9999 se reenviará a la IP de AWS en el puerto 3000:

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

segundo:siguienteestosinstrucciones... incluí eldegradardepurar gema con mi proyecto Rails... y ejecuté el siguiente comando:

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

tercero:Cambié la configuración de depuración de producción en mi Rubymine y apunté al puerto 3000 en mi host local de esta manera:

ingrese la descripción de la imagen aquí

cuatro:Inicié el proceso de depuración desde Rubymine.

problema:El proceso de depuración comenzó... pero me dice que no puede conectarse al 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'

Sé que si intento conectarme directamente a la mysqlbase de datos alojada en la máquina AWS directamente desde un host aleatorio, rechazará esa conexión por los mismos motivos. La idea es engañar a la base de datos mysql haciéndole creer que en realidad me estoy conectando desde aws.

Técnicamente puedo hacer lo mismo: puedo crear otro túnel ssh específicamente para el host mysql, pero entonces, ¿cómo le indico a Rubymine que se conecte a ese túnel para la base de datos?

Respuesta1

Está buscando un túnel SSH que le permita reenviar un puerto local (por ejemplo, 127.0.0.1:9876) al puerto específico en el servidor remoto. Encuentra los detallesaquí

Aquí está la esencia:

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

y aquí tienes un ejemplo:

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

En el ejemplo anterior, reenviamos cualquier solicitud realizada al puerto 9999en la máquina local, al puerto 3306(para MySQL) en el servidor de destino (IP:) 51.100.80.10, túnel a través del puerto SSH en el destino (normalmente el puerto 22).

Con AWS, eso significa que deberá cambiar los Grupos de seguridad en la página EC2 para habilitar el acceso SSH al servidor (SSH normalmente se ejecuta en el puerto 22, por lo que deberá permitir el acceso a ese p).

Respuesta2

resulta que sequelpro ya ofrece la opción de proporcionar una clave ssh... (supongo que es un error... si haces clic en la sshopción y no ves los campos para la clave, vuelve a hacer clic en una de las otras dos pestañas y luego haz clic en nuevamente en ssh... y deberías ver la siguiente pantalla:ingrese la descripción de la imagen aquí

actualizar:veraquípara una discusión detallada sobre cómo conectarse a Sequel Pro usando túneles ssh

información relacionada