2013-01-20 18 views
-2

我已經在OpenShift(一個免費的PaaS)上建立了一個Minecraft服務器。 OpenShift要求內部應用程序(如我的服務器)綁定到範圍爲15000到35530或端口8080的端口。但是,它還需要外部客戶端才能訪問其中一個端口中的服務器: 22, 25, 80 , 109, 110, 143, 220, 443, 465, 587, 993, 或995Unsecuring SSH(或者,通過HTTP代理我的世界數據包)

換句話說,沒有在內部暴露的端口暴露在外;但是,有兩種溝通方式。一個是SSH端口隧道,我已經在我的電腦上安裝了。第二個是通過HTTP,當它通過8080內部發送時,會自動轉發到80。 SSH隧道的問題是需要通過OpenShift添加客戶端的公鑰,客戶端需要設置他們的私鑰,這對於我的大多數朋友來說太複雜了。

我想使連接過程更容易,所以我想到了兩種可能的方式來做到這一點。第一種方法比較簡單,可以通過不需要特定的公鑰或私鑰進行連接來「解密」SSH連接。這是一個遊戲服務器,所以安全對我來說根本不是問題,但我認爲這可能是不可能的,因爲SSH的構建是安全的。另一種方式比較困難,那就是將Minecraft數據包嵌入到HTTP數據包中,OpenShift系統會自動轉發這些數據包。也許這可以使用現有的HHTP代理系統?

如果有人能幫助我解決這兩種方法(或者其他方式,如果你能想到的話),我會非常感激!

+0

您描述了您遇到的問題。如果你解釋你想要做什麼,它可能會有所幫助。我不知道我的世界,它通常如何溝通(哪些端口,什麼協議)?你打算如何將Minecraft數據包嵌入到HTTP數據包中? (你可以通過在每臺客戶端機器上運行本地代理來做到這一點,但也許你有其他想法。) – jimhark

回答

1

爲什麼不只是創建SSH密鑰對專門爲這個應用程序並創建一個使用該特定鍵打開隧道的腳本,然後啓動該程序?您還可以對使用該密鑰的任何連接允許執行的操作(無)進行限制。

#!/bin/sh 
ssh -i ~/pathtoidfile -L 25565:localhost:yourport -f -N 
# run minecraft to local server? 

這只是袖口 - 可能不完全正確。另外,假設一個unix(Mac或Linux)系統。對於Windows,你必須安裝一個ssh客戶端(mingw?)並使用cmd語法。

+0

這似乎是一個更好的解決方案。一旦我生成了密鑰對(並將公鑰添加到OpenShift),我該怎麼做呢?我將如何編寫批處理腳本? – Reubend

+0

你說你已經從你的機器用ssh。剛剛做同樣的事情,但通過-i和到SSH密鑰文件的路徑。將編輯答案。 – DrC

+0

我將使用PLINK自動化這一點,我發現了一個指南網上做它。謝謝! – Reubend