-2

我在 OpenShift 上设置了 Minecraft 服务器,这是一个免费的 PaaS。OpenShift 需要内部应用程序(例如我的服务器)绑定到 15000 到 35530 范围内的端口或端口 8080。但是,它还需要外部客户端通过以下端口之一访问服务器:22、25、80、109、 110、143、220、443、465、587、993 或 995。

换句话说,内部暴露的端口没有一个暴露在外部;但是,有两种通信方式。一种是 SSH 端口隧道,我已经在我的计算机上设置了它。第二种是通过HTTP,内部通过8080发送时自动转发到80。SSH隧道的问题是需要通过OpenShift添加客户端的公钥,而客户端需要设置自己的私钥,这对我的大多数朋友来说太复杂了。

我想让连接过程更容易,所以我想到了两种可能的方法。第一个设置更简单,是通过不需要特定的公钥或私钥来“不安全”连接 SSH 连接。这是一个游戏服务器,所以安全性对我来说根本不是问题,但我认为这可能是不可能的,因为 SSH 是为安全而构建的。另一种更难的方法是将 Minecraft 数据包嵌入到 HTTP 数据包中,OpenShift 系统会自动转发这些数据包。也许这可以使用现有的 HHTP 代理系统?

如果有人可以帮助我解决这两种方式中的任何一种(或另一种方式,如果你能想到一个),我将非常感激!

4

1 回答 1

1

Why not just create an ssh key pair specifically for this application and create a script that opens the tunnel using that specific key and then launches the program? You can also put restrictions on what any connection using that key is allowed to do (nothing).

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

This is just off the cuff - probably not exactly correct. Also, assumes a unix (Mac or Linux) system. For windows, you'd have to install an ssh client (mingw?) and use cmd syntax.

于 2013-01-20T01:56:31.820 回答