Как туннелировать порт 25565 через SSH?

12990
Matt

Я хочу сыграть в игру с портом 25565 (майнкрафт!), Но мой университетский брандмауэр не позволяет этот порт.

У меня есть выделенный сервер под управлением Linux, который расположен не слишком далеко от универа, поэтому я думаю, что есть способ туннелировать через него (но я никогда не делал этого раньше и не имею знаний / опыта туннелирования)

Возможно, это будет медленно, но лучше, чем вообще не играть. Можно ли использовать только SSH или мне нужно другое клиент / серверное программное обеспечение? На моем сервере установлен OpenSSH. Кроме того, компьютер, на котором я играю, работает под управлением Ubuntu.

Я пробовал искать, но кажется, что есть много разных решений для разных типов проблем = /

5

6 ответов на вопрос

6
K1thros

Просто запустите команду

ssh -L 25565:minecraftserverIp:25565 user@remotelinuxbox 

Затем добавьте сервер к вашему клиенту minecraft localhost: 25565

Это позволит вам подключиться к удаленному серверу Minecraft через туннель SSH.

Я должен добавить, что вы можете сделать это для любого количества серверов, просто изменив первые 25565 на любой номер порта, а затем добавьте новый сервер в клиент Minecraft, используя новый порт. K1thros 11 лет назад 0
Edi ваш ответ, чтобы включить дополнительную соответствующую информацию. Enigma 11 лет назад 0
4
erik

Я нарисовал несколько эскизов

Для облегчения понимания туннельных механизмов посмотрите эти эскизы. Компьютер, на котором набрана команда ssh tunnel, называется « ваш хост» .

SSH туннель, начиная с локального


SSH туннель, начиная с удаленного

Вступление

  1. местный: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostозначает: подключиться с помощью ssh к connectToHostи перенаправить все попытки подключения на локальный sourcePort порт onPortна вызываемом компьютере, доступ к forwardToHostкоторому можно получить с connectToHostкомпьютера.

  2. дистанционный пульт: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostозначает: подключиться с помощью ssh connectToHostи перенаправить все попытки подключения на удаленный sourcePort порт onPortв вызываемую машину, доступ к forwardToHostкоторой можно получить с локальной машины.

Ваш пример

Второе изображение представляет ваш сценарий. remotehostВаш выделенный сервер работает линукс не слишком далеко от универа . Это farawayhostзаблокированный сервер Minecraft, к которому вы хотите подключиться через свой розовый порт 25565.

 ssh -L 12345:minecraftServerIP:25565 dedicatedServer 

Номер порта зеленого порта есть 12345. Теперь вы можете получить доступ к серверу Minecraft, подключившись к

localhost:12345 

Конечно, вы можете изменить номер зеленого порта 12345на любой другой.

Классные зарисовки, @erik! wombatonfire 7 лет назад 0
1
RC1140

Самый простой способ - использовать putty (Client Side APP). Вам не нужно ничего на удаленной стороне, кроме правил брандмауэра, чтобы разрешить исходящие соединения

Настроить:

  1. В рамках установки замазки новое соединение с вашей коробкой Unix. (Добавьте информацию о хосте и т. Д., Пока не подключайтесь)
  2. После того, как все это настроено, перейдите в Connection -> SSH -> Tunnels в представлении дерева замазок.
  3. Затем введите 25565 в порт источника и оставьте место назначения пустым.
  4. Наконец, выберите динамический в первом поле со списком.
  5. Убедитесь, что вы сохранили все, а затем, наконец, нажмите кнопку открытия

Это создаст туннель на порту 25565 локально к любому месту назначения на удаленном сайте. Это также предполагает, что вы можете туннелировать соединение с Minecraft (вам может потребоваться установить настройки IE для использования туннеля SSH, так как игры иногда используют это, если не могут получить соединение)

Если вы не можете туннелировать Minecraft по умолчанию, используйте приложение, такое как прокси-кеп, для принудительного подключения всех проходящих соединений через туннель.

Minecraft не позволяет мне выбрать прокси, он просто подключается напрямую. Я узнал, как настроить прокси-сервер и настроить его для применения в масштабе всей системы, и он работает для Firefox и т. Д., Но Minecraft просто игнорирует его. Вы имеете в виду Internet Explorer под IE? Если так, я на Linux :) Matt 13 лет назад 3
Извините, я предполагал, что вы используете Windows, но у linux такая же опция (по крайней мере, в Ubuntu). Если вы зайдете в Система -> Настройки -> Сетевой прокси, вы сможете маршрутизировать весь или большую часть трафика через прокси. В Linux вы также можете использовать proxytunnel для туннелирования через http прокси (если это то, что у вас есть) RC1140 13 лет назад 0
Как насчет Mac? Zero Stack 12 лет назад 0
@Foxtrot Вы можете сделать то же самое на Mac, вместо того, чтобы использовать putty, использовать приложение Terminal и следующую команду ssh @ -D 25565, после подключения вы можете сменить системный прокси-сервер, перейдя в -> Настройки -> Сеть, а затем нажмите на расширенный для вас текущее активное сетевое соединение. Наконец, нажмите прокси и введите детали в опции Socks Proxy и убедитесь, что она отмечена RC1140 12 лет назад 1
1
bob

Попробуйте http-туннель . Просто зайдите в Настройки> Добавить порты / Приложения и введите IP-адрес сервера и порт приложения (обычно 25565), затем нажмите ОК и попробуйте запустить minecraft.

0
Stuart

Вы можете изменить порт, на котором работает Minecraft, поэтому просто установите его на 22 (потому что они не заблокировали SSH), и вы сможете играть, указав порт на каждом клиенте.

Невозможно, если я не запускаю сервер. В конце я попросил хост добавить карту портов на своем сервере с 1863 (MSN, разблокирован) до 25565. Matt 12 лет назад 1
0
Wyatt8740

Windows users, skip down a bit to the 'under windows' heading.

  • Linux (or UNIX) Users

    Install a SSH client of some kind (rather obvious)

    Make the following bash (or plain ol' sh) script:

#! /bin/bash

ssh -nfN -D 8080 "<your-ip-or-url-here>"

sleep 8

java -jar \

"/path/to/launcher-for-minecraft.jar"

You can change how long it 'sleeps' (to make sure that the ssh connection has been initialized) manually if you want. anything else can be changed too.

**follow the steps under the 'Steps to configure minecraft to use this tunnel' heading, and then run the script!

.

  • Windows Users

    Using PuTTY, I go under 'connection' and allow TCP keep-alives, also setting the number of seconds between keep-alives to 6.

    I then go down to 'SSH -> tunnels' and add a dynamic forwarded port for 8080. This is necessary as well as 25565. To accomplish this, do the following:

    Enter 8080 for the 'source port', and 8080 for the 'destination port'. do NOT prefix the destination port with `localhost:'.

    I also manually added port 25565. This one should be a 'local' forward, not a 'dynamic' forward.

    To accomplish this, do the following:

    enter 25565 as the source port, and localhost:25565 as the destination port. Select the local radio button (then hit add).

.

  • Steps to configure minecraft to use this tunnel

    In the new minecraft launcher, edit your profile (use the aptly named edit profile button) or make a new one for tunneling (new profile) and click the checkbox next to JVM Arguments. In the box that is no longer greyed out, add the following string to the argument already there (should be -Xmx1G):

    -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=8080

    Now, the arguments will look like this:

    -Xmx1G -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=8080

    Click Save Profile.

Save your pUTTY session settings.

  • With your pUTTY terminal active (just log in, and you don't need to do anything else) start Minecraft under the profile you created/edited. Assuming you are tunneling to a valid host (in my case, a linux PC i own that is not behind such a draconian firewall), you should now have minecraft multiplayer running! Congratulations!

I initially learned how to do this by determining what this shellscript (https://gist.github.com/EspadaV8/1088594) did, and copying that functionality into pUTTY's settings.

The other answers didn't completely solve the problem, because they failed to realize that java doesn't follow the global windows proxy settings. My answer makes use of the little-known -DsocksProxyHost and -DsocksProxyPort arguments provided at initialization. For a http proxy or SSL proxy, use -DhttpProxyHost and -DhttpProxyPort options, or -DhttpsProxyHost and -DhttpsProxyPort arguments, respectively. I can confirm personal success using this method behind a proxy and a firewall :D

Похожие вопросы