1

Я понимаю, что есть много информации о переадресации портов, но вот моя конкретная ситуация.

Мне нужно использовать Remote in (через VNC) для моего Mac. По умолчанию сервер удаленного общего доступа Mac прослушивает порт 5900. Это было бы все хорошо, за исключением того, что моя компания блокирует входящие порты 5900!

Тем не менее, это разрешает порт 3389. Итак, я пытаюсь настроить его так, чтобы я мог прослушивать соединения через порт 3389 и перенаправлять их на 5900.

Вот что я попробовал:ssh 127.0.0.1 -L3389:127.0.0.1:5900

Это не совсем то, что я хочу, потому что тогда только порты с 127.0.0.1 будут приниматься через порт 3389.

 netstat -an | egrep 'Proto|LISTEN'
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp6       0      0  *.5900                 *.*                    LISTEN
tcp4       0      0  *.5900                 *.*                    LISTEN
tcp4       0      0  127.0.0.1.3389         *.*                    LISTEN

Мне нужно слушать из мира, * на порт 3389 . Как я могу сделать это?

4 ответа4

1

Вместо переадресации портов вы можете изменить порт, на котором launchd прослушивает соединения VNC. (launchd прослушивает от имени screensharingd и запускает screensharingd при попытке подключения).

screensharingd - это VNC-сервер по умолчанию, включенный в OS X. Если вы используете вместо этого Apple Remote Desktop (также называемый ARD, "Удаленное управление"), эти инструкции, возможно, придется несколько изменить.

Отредактируйте /System/Library/LaunchDaemons/com.apple.screensharing.plist

Найдите эту пару ключ / значение:

<key>SockServiceName</key>
<string>vnc-server</string>

И изменить это на это:

<key>SockServiceName</key>
<string>3389</string>

Тогда вам, вероятно, потребуется перезагрузить компьютер или использовать launchctl чтобы принудительно запустить launchd для перезагрузки этого списка.

Затем в вашем VNC-клиенте укажите порт 3389. Например, встроенный VNC-клиент OS X использует URL-адреса, поэтому вы можете передать его vnc://username:password@host.example.com:3389/ . Или оставьте username:password чтобы вы получили запрос.

Предостережение лектор: я сам не пробовал, так что попробуйте на свой страх и риск. Подумайте о том, чтобы сделать резервную копию этого plist-файла перед его редактированием, чтобы было легко вернуть его на прежнее место.

1

Ваш вопрос немного конкретен, сложно дать прямые ответы, не зная некоторых вещей:

  1. Можете ли вы подключиться к порту VNC по умолчанию извне - скажем, из дома друга, где ваша работа не блокирует вас? Если это так, вы можете изменить порт, который VNC прослушивает, на 3389 и проверить его. Как изменить используемый по умолчанию номер экрана общего доступа / номер порта VNC в Mac OS X?

  2. Упомянутая вами команда ssh должна быть запущена с СОЕДИНИТЕЛЬНОЙ машины, а не с "сервера". Таким образом, вы бы запустить:

    ssh address.of.your.mac -L9999:127.0.0.1:5900
    

    и затем подключите VNC к localhost:9999 на вашем клиентском компьютере. Я использую 9999 в качестве примера, поскольку он, вероятно, не используется, и 5900 может быть, если ваш клиент Mac, и 3389, если ваш клиент Windows.

Чтобы быть понятным: вам нужно будет иметь возможность подключиться к вашему Mac с ssh, число после -L - это порт, к которому вы подключаетесь на своем подключающемся компьютере (localhost), 127.0.0.1:5900 - это то, где VNC уже прослушивает ваш (удаленный) Mac.

  1. Я также подумал бы о VPN, чтобы обойти ограничения работы (и для безопасности). OpenVPN может легко работать через порт 443 (HTTPS), который, вероятно, разрешен, и даже будет работать через прокси-сервер, если ваша работа ограничивает доступ к Интернету таким образом. Настроить это не слишком сложно, но выходит за рамки этого вопроса.
0

Вы можете попробовать опцию -D с ssh, которая является динамической переадресацией портов. Так что это может выглядеть так: ssh -D 3389 yourAccount@yourDomain.com

Я сделал это вчера и вспоминаю это по памяти, но это основа этого. Как только эта команда сработает, вы просто вводите свой пароль и настраиваете свое приложение для прослушивания на указанном порту - 3389 в вашем случае с 127.0.0.1 в качестве IP-адреса.

Я думаю, что это создает своего рода SOCKS прокси с использованием ssh.

:D

0

Я думаю, вы ищете что-то вроде этого, эквивалент Mac для iptables.

У меня нет Mac, поэтому я не могу проверить это сам, но я бы предложил попробовать

sudo ipfw add fwd 127.0.0.1,5900 tcp from any to 127.0.0.1 dst-port 3389

Обратите внимание, что, похоже, существуют различные синтаксисы, которые может обрабатывать ipfw (127.0.0.1,3389 и 127.0.0.1 3389 похоже, они также будут работать из того, что я могу найти). Я бы связал вас со страницей FreeBSD, но, как новый пользователь, у меня пока недостаточно репов:whistle:.

В качестве альтернативы, поскольку ipfw устарел, вы можете попробовать pfctl как описано здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .