Как изменить экран по умолчанию общий доступ по VNC порт на Mac ОС Х?

есть ли способ, чтобы изменить значение по умолчанию 5900 к другому порту?

11
задан slhck
15.11.2022 10:23 Количество просмотров материала 3686
Распечатать страницу

4 ответа

ты на самом деле can переключите порт по умолчанию для VNC-сервера Apple на Mac OS 10.7 Lion и 10.8 Mountain Lion. Чтобы изменить порт, необходимо отредактировать plist файл сервера /System/Library/LaunchDaemons/com.apple.screensharing.plist (этот файл не существует в системах до версии 10.7 Lion).

Редактирование файла требует привилегий root (sudo). В терминале, если вы знакомы с VI или vim можно типа:

sudo vim /System/Library/LaunchDaemons/com.apple.screensharing.plist

или если вы нет, то вы должны использовать nano:

sudo nano /System/Library/LaunchDaemons/com.apple.screensharing.plist

теперь, все, что вам нужно сделать, это изменить строку 34 (тот, который читает <string>vnc-server</string>) to <string>nnnn</string> где nnnn-номер порта, который вы хотите использовать. Я знаю, что это кажется странным, изменяя имя как "vnc-server" на номер, но это способ, которым вы должны это сделать. Я включил пример ниже, если что-то не понятно.

чтобы изменить порт по умолчанию на 54321, отредактируйте файл plist следующим образом:

...
<key>Sockets</key>
  <dict>
      <key>Listener</key>
      <dict>
          <key>Bonjour</key>
          <string>rfb</string>
          <key>SockServiceName</key>
          <string>54321</string>            <!-- Change this line! -->
      </dict>
  </dict>
  <key>UserName</key>
  <string>root</string>
  <key>SHAuthorizationRight</key>
  <string>system.preferences</string>
</dict>
</plist>

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

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.screensharing.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.screensharing.plist
15
отвечен Greg Canty 2022-11-16 18:11

Я могу подтвердить, найдя эту тему через Google, что редактирование /etc/services для портов "rfb" изменит включенные порты прослушивания VNC-сервера.

я отредактировал файл и перезагрузился (обычно я пытался перезапустить службы или выгрузить launchdeamon, но у меня были и другие проблемы, и я не беспокоился). iTeleport на моем iPad затем не удалось подключиться на 5900 и удалось на высоком непривилегированном Порту я выбрал.

4
отвечен MichaelM 2022-11-16 20:28

Это уже обсуждалось на различных форумах в apple.com и macosxhints.com. Короткий ответ: "вы не можете изменить это".

более длинные ответы предлагают способы обойти это-три возможности:

  • использовать альтернативное программное обеспечение сервера VNC
  • используйте SSH туннель для перенаправления трафика с вашего пользовательского порта на 5900
  • настройка отображения портов в маршрутизаторе для приема входящего трафика на другой порт порт 5900 на компьютере mac.
3
отвечен Doug Harris 2022-11-16 22:45

основываясь на информации, предоставленной Грегом в этом потоке, я написал сценарий bash, который автоматизирует процесс изменения порта прослушивания VNC вашей системы. Хорошо работает в моих тестах. Дайте мне знать, если у кого-то есть какие-либо проблемы с ним.

#!/bin/sh

#Created by Will D. on 04/10/2015
#If you find it useful (or have suggestions, feedback, etc.), shoot me an email at throwapenny@me.com.
#Requires Mac OS 10.7.x or later (tested up to and including 10.10.3)
#02/02/2016 - Updated Script to alert for SIP status

#Setting Static Variables
sourcepath="/System/Library/LaunchDaemons/"
filename="com.apple.screensharing.plist"
port=`less $sourcepath$filename | awk 'f{print ;f=0} /SockServiceName/ {f=1}' | awk -F "<|>" '{print }'`
os_version=`sw_vers -productVersion`
os_version_aug=`sw_vers -productVersion | awk -F "." '{print }'`
sip_status=`csrutil status | awk '{print }'`
#Colors
nc='3[0m'
light_red='3[1;31m' #Light Red
yellow='3[1;33m' #Yellow

clear

#Check the script is being run by root
if [ "$EUID" -ne 0 ];then
    printf "${light_red}This Script Must Run As Root${nc}\n"
    exit 0
fi

clear
printf ${yellow};echo "---------------------------------------------------------------"
echo "---                                                         ---"
echo "--- This Script Will Change Your Systems VNC Listening Port ---"
echo "---             Hit Ctrl + c to exit at anytime             ---"
echo "---                                                         ---"
echo "---------------------------------------------------------------";printf "${nc}\n"

#Check System Version
sleep 1
if [ "${os_version_aug}" -lt "107" ]; then
echo ""
echo "System OS Must Be Greater Than 10.7.x.  Aborting Script."
exit 0
else
echo ""
echo "System OS Version is" $os_version
echo "OS Requirement Met √"
echo "--------"
fi

if [ "${os_version_aug}" == "1011" ]; then
    if [ "${sip_status}" == "enabled." ]; then
        echo ""
        printf "${light_red}••• System Integrity Protection is Enabled •••${nc}\n"
        echo ""
        echo "This script modifies /System/Library/LaunchDaemons/com.apple.screensharing.plist"
        echo "Please Disable System Integrity Protection Before Running"
        echo ""
        exit 0
    fi
fi

#Give Feedback on Current Port
sleep 1
if [ "${port}" == "vnc-server" ]; then
echo ""
echo "The System's VNC Port is Currently"
echo "Set to the System Default Port of 5900."
echo "--------"
elif [ "${port}" != "vnc-server" ]; then
echo ""
echo "The System's VNC Port is Currently"
echo "Set to a Non-default Port of" $port"."
echo "--------"
fi

#Updating Port
echo ""
printf "What Port Would You Like VNC to Listen On? "
read newport
echo ""
echo "The Following Action Requires an Admin Password."
echo "Note: Your Password Will Be Visible When You Type It"
echo ""
printf "Admin Password? "
read admin_pass
sleep 1
echo ""
echo "Created" $filename".bak."
sleep 1
echo ""
echo "Updating VNC Port to" $newport"..."
echo $admin_pass | sudo -S sed -i.bak -e "s|$port|$newport|g" $sourcepath$filename
sleep 1
echo "Done"
echo ""
sleep 1

#Restarting screensharing process
echo "Restarting Screen Sharing Service..."
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.screensharing.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.screensharing.plist
echo "Done"
sleep 1
echo ""
echo "Your System's VNC Port is Now Set to" $newport"."
echo ""
echo "Update Complete.  All Done."

if [ "${os_version_aug}" == "1011" ]; then
    echo ""
    echo "Since you're running El Capitan"
    echo "be sure to re-enable System Integrity Protection"
    exit 0
fi

exit 0
1
отвечен Will 2022-11-17 01:02

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх