Rzeczywiście można przełączyć domyślny port dla serwera VNC na Apple Mac OS 10.7 Lion i 10.8 Mountain Lion. Aby zmienić port, musisz edytować plik plist serwera /System/Library/LaunchDaemons/com.apple.screensharing.plist(ten plik nie istnieje w systemach wcześniejszych niż 10.7 Lion).
Edycja pliku wymaga uprawnień roota (sudo). W terminalu, jeśli znasz vi lub vim , możesz wpisać:
sudo vim /System/Library/LaunchDaemons/com.apple.screensharing.plist
Teraz wszystko, co musisz zrobić, to zmienić wiersz 34 (ten, który czyta <string>vnc-server</string>) na <string>nnnn</string>gdzie nnnn to numer portu, którego chcesz użyć. Wiem, że dziwne wydaje się zmienianie nazwy typu „serwer vnc” na liczbę, ale właśnie tak trzeba to zrobić. Podałem przykład poniżej na wypadek, gdyby nic nie było jasne.
Aby zmienić domyślny port na 54321, zmodyfikuj plik plist, aby wyglądał następująco:
Po zapisaniu pliku, aby zmiana zaczęła obowiązywać, wyłącz opcję Udostępnianie ekranu, a następnie włącz ją ponownie w okienku preferencji Udostępnianie lub alternatywnie zwolnij i ponownie załaduj usługę za pomocą następujących poleceń:
Jeśli nadal jesteś w pobliżu - gdy to zrobisz, istnieje porównywalny sposób, aby uzyskać wbudowaną aplikację do udostępniania ekranu dla komputerów Mac, aby połączyć się z tym portem lub utkniesz przy użyciu aplikacji vnc innych firm, które pozwalają określić Port?
Jim Miller,
2
Odpowiedź na powyższe: w polu „Połącz z serwerem ...” podaj vnc: //yourserver.com: 54321 (zgodnie z poprzednim numerem portu powrotnego)
Jim Miller,
Jeśli to zadziała (nie mogę sprawdzić do wieczora), zasługujesz na dużo więcej pozytywnych opinii.
PaulSkinner,
1
Aby potwierdzić, tak, należy to zrobić po każdej aktualizacji systemu operacyjnego (w tym aktualizacji przyrostowych).
PaulSkinner
1
Aby dodać jeszcze jedną uwagę, nowa funkcja „rootless” w systemie OS X 10.11 El Capitan oznacza, że nie można już zapisać tego konkretnego pliku bez wyłączenia funkcji rootowania, co nie jest zalecane. Czy ktoś zna obejście bez wyłączania rootowania?
PaulSkinner,
5
Mogę potwierdzić po znalezieniu tego wątku za pośrednictwem Google, że edycja /etc/servicesportów „rfb” spowoduje zmianę portów nasłuchiwania dołączonego serwera VNC.
Zredagowałem plik i zrestartowałem (zwykle próbowałem ponownie uruchomić usługi lub zwolnić plik launchdeamon, ale miałem też inne problemy i nie przeszkadzałem). iTeleport na moim iPadzie nie udało się połączyć na 5900 i udało się na wysokim, nieuprzywilejowanym porcie, który wybrałem.
Ze względu na kompletność: niektórzy sugerują, że zmiana portów /etc/Servicesmoże załatwić sprawę. Próbowałem tego (nawet zrestartowałem komputer Mac po zmianie) bezskutecznie. Zastanawiając się nad tym, może być nawet złym pomysłem na bałagan z tym plikiem, ponieważ inne aplikacje mogą go również użyć, aby uzyskać znany numer portu, jeśli chcą połączyć się z jakąś firmą zewnętrzną za pomocą określonego protokołu. (Na przykład: zmiana portu SSH w tym pliku może wydawać się działać, ale jest złym pomysłem .)
Arjan
1
Zwróć uwagę na odpowiedź Grega Canty'ego - można ją zmienić w wydaniach OS X po Snow Leopard. Ta odpowiedź została napisana przed wydaniem OS X Lion.
Doug Harris
1
Na podstawie informacji dostarczonych przez Grega w tym wątku napisałem skrypt bash, który zautomatyzuje proces zmiany portu nasłuchiwania VNC twojego systemu. Działa dobrze w moich testach. Daj mi znać, jeśli ktoś ma z tym jakieś problemy.
#!/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 [email protected].
#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 $1;f=0} /SockServiceName/ {f=1}' | awk -F "<|>" '{print $3}'`
os_version=`sw_vers -productVersion`
os_version_aug=`sw_vers -productVersion | awk -F "." '{print $1$2}'`
sip_status=`csrutil status | awk '{print $5}'`
#Colors
nc='\033[0m'
light_red='\033[1;31m' #Light Red
yellow='\033[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
Kiedy próbowałem uzyskać dostęp do linku - dostałem błąd Ten serwer nie mógł udowodnić, że jest getome.homeftp.net; jego certyfikat bezpieczeństwa nie jest zaufany przez system operacyjny twojego komputera. Może to być spowodowane błędną konfiguracją lub atakiem przechwytującym twoje połączenie.
Prasanna,
Przepraszam za tego Mureinika. Kod opublikowany zamiast linku.
Czy
0
Aby zmienić domyślny port i / lub adres powiązania bez wyłączania Ochrony integralności systemu , musisz utworzyć nowego LaunchDaemon w /Library.
Niestety agent udostępniania ekranu nie będzie działał poprawnie po przypisaniu innej etykiety. Oznacza to, że demon musi „zasłaniać” oryginał przy użyciu tej samej nazwy. Powoduje to własne problemy, ponieważ po ponownym uruchomieniu system załaduje oryginał /Systemi zignoruje zmodyfikowaną wersję /Library.
Rozwiązaniem jest wyłączenie LaunchDaemon i użycie demona „launchera”, który siłą załaduje zmodyfikowany LaunchDaemon. Jednak należy zachować ostrożność, aby nadal aktywować Udostępnianie ekranu poprzez preferencje lub zakończy się ono w trybie tylko obserwowania .
Krok po kroku
Aktywuj udostępnianie ekranu w Preferencjach systemowych
Następnie prawa do udostępniania ekranu zostaną odpowiednio skonfigurowane, domyślny demon nie załaduje się automatycznie, a nasz program uruchamiający wymusi uruchomienie naszego dostosowanego demona.
Odpowiedzi:
Rzeczywiście można przełączyć domyślny port dla serwera VNC na Apple Mac OS 10.7 Lion i 10.8 Mountain Lion. Aby zmienić port, musisz edytować plik plist serwera
/System/Library/LaunchDaemons/com.apple.screensharing.plist
(ten plik nie istnieje w systemach wcześniejszych niż 10.7 Lion).Edycja pliku wymaga uprawnień roota (sudo). W terminalu, jeśli znasz vi lub vim , możesz wpisać:
lub jeśli nie, lepiej użyj nano :
Teraz wszystko, co musisz zrobić, to zmienić wiersz 34 (ten, który czyta
<string>vnc-server</string>
) na<string>nnnn</string>
gdzie nnnn to numer portu, którego chcesz użyć. Wiem, że dziwne wydaje się zmienianie nazwy typu „serwer vnc” na liczbę, ale właśnie tak trzeba to zrobić. Podałem przykład poniżej na wypadek, gdyby nic nie było jasne.Aby zmienić domyślny port na 54321, zmodyfikuj plik plist, aby wyglądał następująco:
Po zapisaniu pliku, aby zmiana zaczęła obowiązywać, wyłącz opcję Udostępnianie ekranu, a następnie włącz ją ponownie w okienku preferencji Udostępnianie lub alternatywnie zwolnij i ponownie załaduj usługę za pomocą następujących poleceń:
źródło
Mogę potwierdzić po znalezieniu tego wątku za pośrednictwem Google, że edycja
/etc/services
portów „rfb” spowoduje zmianę portów nasłuchiwania dołączonego serwera VNC.Zredagowałem plik i zrestartowałem (zwykle próbowałem ponownie uruchomić usługi lub zwolnić plik launchdeamon, ale miałem też inne problemy i nie przeszkadzałem). iTeleport na moim iPadzie nie udało się połączyć na 5900 i udało się na wysokim, nieuprzywilejowanym porcie, który wybrałem.
źródło
Zostało to omówione na różnych forach na apple.com i macosxhints.com . Krótka odpowiedź brzmi: „nie możesz tego zmienić”.
Dłuższe odpowiedzi sugerują sposoby obejścia tego problemu - trzy możliwości:
źródło
/etc/Services
może załatwić sprawę. Próbowałem tego (nawet zrestartowałem komputer Mac po zmianie) bezskutecznie. Zastanawiając się nad tym, może być nawet złym pomysłem na bałagan z tym plikiem, ponieważ inne aplikacje mogą go również użyć, aby uzyskać znany numer portu, jeśli chcą połączyć się z jakąś firmą zewnętrzną za pomocą określonego protokołu. (Na przykład: zmiana portu SSH w tym pliku może wydawać się działać, ale jest złym pomysłem .)Na podstawie informacji dostarczonych przez Grega w tym wątku napisałem skrypt bash, który zautomatyzuje proces zmiany portu nasłuchiwania VNC twojego systemu. Działa dobrze w moich testach. Daj mi znać, jeśli ktoś ma z tym jakieś problemy.
źródło
Aby zmienić domyślny port i / lub adres powiązania bez wyłączania Ochrony integralności systemu , musisz utworzyć nowego LaunchDaemon w
/Library
.Niestety agent udostępniania ekranu nie będzie działał poprawnie po przypisaniu innej etykiety. Oznacza to, że demon musi „zasłaniać” oryginał przy użyciu tej samej nazwy. Powoduje to własne problemy, ponieważ po ponownym uruchomieniu system załaduje oryginał
/System
i zignoruje zmodyfikowaną wersję/Library
.Rozwiązaniem jest wyłączenie LaunchDaemon i użycie demona „launchera”, który siłą załaduje zmodyfikowany LaunchDaemon. Jednak należy zachować ostrożność, aby nadal aktywować Udostępnianie ekranu poprzez preferencje lub zakończy się ono w trybie tylko obserwowania .
Krok po kroku
Wykonać
Wykonać
W
/Library/LaunchDaemons/com.apple.screensharing.plist
edytuj sekcję Gniazda, aby wyglądać tak, jak chcesz. Na przykład słuchanielocalhost:5901
:Utwórz
/Library/LaunchDaemons/com.apple.screensharing.launcher.plist
z następującą zawartością:Wykonać
Następnie prawa do udostępniania ekranu zostaną odpowiednio skonfigurowane, domyślny demon nie załaduje się automatycznie, a nasz program uruchamiający wymusi uruchomienie naszego dostosowanego demona.
źródło