如何使用AWS私鑰將本機應用程式(即rubymine、prosequel)連接到遠端伺服器?

如何使用AWS私鑰將本機應用程式(即rubymine、prosequel)連接到遠端伺服器?

允許遠端連線(通常在 ssh 中)的程式通常會要求使用者名稱/密碼來連線到遠端伺服器:請參閱下列範例續集專業版紅寶石礦, 分別:

續集專業版:嘗試透過 ssh 連線到遠端 mysql 伺服器:

連接視窗sequelpro

紅寶石礦:嘗試進行伺服器端調試: rubytime 連線配置視窗

借助亞馬遜AWS,使用 SSH 連接你需要一個私鑰,連線指令如下:

ssh -i %privateKeyFileName.pem% ubuntu@server

問題:如何包含此私有檔案才能使用 prosql 或 ruby​​mine 等應用程式成功連接?


更新:續集專業版可以完成原生地..至於紅寶石..我開始做SSH 隧道..所以步驟如下:

第一的:我在我的機器上啟動了 ssh 隧道進程,以便對 localhost:9999 連接埠發出的任何請求都會轉送到連接埠 3000 處的 aws ip:

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

第二:下列的這些說明..我捆綁了貶低使用我的 Rails 專案調試 gem 並運行以下命令:

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

第三:我更改了 ruby​​mine 中的生產調試設置,並將其指向本地主機中的端口 3000,如下所示:

在此輸入影像描述

第四:我從 ruby​​mine 啟動了調試過程..

問題:調試過程開始了..但它告訴我它無法連接到 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'

我知道,如果我嘗試直接mysql從隨機主機直接連接到 aws 電腦上託管的資料庫,它將以同樣的理由拒絕該連線。這個想法是欺騙 mysql 資料庫,讓其認為我實際上是從 aws 內部連接到它的。

從技術上講,我可以做同樣的事情:我可以專門為 mysql 主機建立另一個 ssh 隧道,但是我如何指示 ruby​​mine 連接到資料庫的該隧道?

答案1

您正在尋找 SSH 隧道,以允許您將本機連接埠(例如127.0.0.1:9876)轉送至遠端伺服器上的特定連接埠。尋找詳情這裡

要點如下:

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

這是一個例子:

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

在上面的範例中,我們將向9999本機電腦上的連接埠發出的任何請求轉送到3306目標伺服器 (IP:) 上的連接埠(對於 MySQL 51.100.80.10) - 透過目標上的 SSH 連接埠(通常是 port 22)進行隧道傳輸。

對於 AWS,這表示您需要變更 EC2 頁面上的安全性群組,以啟用對伺服器的 SSH 存取(SSH 通常在連接埠 運行22,因此您需要允許存取該 p)。

答案2

事實證明,sequelpro 已經提供了提供 ssh 金鑰的選項ssh。而不是單擊再次打開ssh..,您應該會看到以下畫面:在此輸入影像描述

更新:這裡有關使用 ssh 隧道連接到 Sequel Pro 的詳細討論

相關內容