Wie ändere ich die standardmäßige Bildschirmfreigabe / VNC-Portnummer unter Mac OS X?
Gibt es eine Möglichkeit, es von der Standardeinstellung 5900
in einen anderen Port zu ändern?
5 answers
Sie können tatsächlich den Standardport für Apples VNC-Server unter Mac OS 10.7 Lion und 10.8 Mountain Lion wechseln. Um den Port zu ändern, müssen Sie die Plist-Datei des Servers /System/Library/LaunchDaemons/com.apple.screensharing.plist
bearbeiten (diese Datei ist in Systemen vor 10.7 Lion nicht vorhanden).
Das Bearbeiten der Datei erfordert Root-Rechte (sudo). Wenn Sie im Terminal mit vi oder vim vertraut sind, können Sie Folgendes eingeben:
sudo vim /System/Library/LaunchDaemons/com.apple.screensharing.plist
Oder wenn Sie nicht sind, sollten Sie nano:
sudo nano /System/Library/LaunchDaemons/com.apple.screensharing.plist
Nun, ihr alle sie müssen Zeile 34 (diejenige, die <string>vnc-server</string>
liest) in <string>nnnn</string>
ändern, wobei nnnn die Portnummer ist, die Sie verwenden möchten. Ich weiß, es scheint seltsam, einen Namen wie "vnc-Server" in eine Nummer zu ändern, aber so müssen Sie es tun. Ich habe unten ein Beispiel eingefügt, falls etwas nicht klar ist.
Um den Standardport in 54321 zu ändern, bearbeiten Sie die Plist-Datei folgendermaßen:
...
<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>
Schalten Sie nach dem Speichern der Datei die Bildschirmfreigabe aus und dann wieder ein, damit die Änderung wirksam wird. im Bereich "Freigabeeinstellungen" oder alternativ mit den folgenden Befehlen den Dienst entladen und neu laden:
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.screensharing.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.screensharing.plist
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-12-15 19:47:12
Ich kann bestätigen, nachdem ich diesen Thread über Google gefunden habe, dass durch Bearbeiten von /etc/services
für die " rfb " - Ports die Listening-Ports des enthaltenen VNC-Servers geändert werden.
Ich habe die Datei bearbeitet und neu gestartet (normalerweise würde ich versuchen, Dienste neu zu starten oder den Launchdeamon zu entladen, aber ich hatte auch einige andere Probleme und störte mich nicht). iTeleport auf meinem iPad konnte dann keine Verbindung zu 5900 herstellen und war an dem von mir gewählten hohen, nicht privilegierten Port erfolgreich.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-10-14 01:46:04
Dies wurde diskutiert über verschiedene Foren bei apple.com und macosxhints.com. Die kurze Antwort lautet "Sie können es nicht ändern".
Die längeren Antworten schlagen Wege vor - drei Möglichkeiten:
- Verwenden Sie alternative VNC-Server-Software
- Verwenden Sie einen SSH-Tunnel, um den Datenverkehr von Ihrem benutzerdefinierten Port auf 5900 umzuleiten
- Konfigurieren Sie die Portzuordnung in Ihrem Router so, dass eingehender Datenverkehr über einen anderen Port auf Port 5900 auf Ihrem Mac übertragen wird.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-06-02 18:06:51
Basierend auf den Informationen von Greg in diesem Thread habe ich ein Bash-Skript geschrieben, das den Prozess des Änderns des VNC-Abhörports Ihres Systems automatisiert. Funktioniert gut in meinen Tests. Lassen Sie mich wissen, ob jemand Probleme damit hat.
#!/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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-02-02 18:42:06
Um den Standardport und/oder die Bindungsadresse zu ändern, ohne System Integrity Protection zu deaktivieren, müssen Sie in /Library
einen neuen LaunchDaemon erstellen.
Leider funktioniert der Screen Sharing Agent nicht richtig, wenn ein anderes Label zugewiesen wird. Das bedeutet, dass der Daemon das Original mit demselben Namen "beschatten" muss. Das verursacht eigene Probleme, da das System beim Neustart das Original in /System
lädt und die geänderte Version in /System
ignoriert /Library
.
Die Lösung besteht darin, den LaunchDaemon zu deaktivieren und einen "Launcher" - Daemon zu verwenden, der den geänderten LaunchDaemon gewaltsam lädt. Es muss jedoch darauf geachtet werden, die Bildschirmfreigabe weiterhin über die Einstellungen zu aktivieren orelse es wird in endup Beobachten Sie nur Modus.
Schritt für Schritt
- Bildschirmfreigabe in den Systemeinstellungen aktivieren
-
Ausführen
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
-
Ausführen
sudo cp /System/Library/LaunchDaemons/com.apple.screensharing.plist /Library/LaunchDaemons/com.apple.screensharing.plist
-
In
/Library/LaunchDaemons/com.apple.screensharing.plist
, " Bearbeiten der Abschnitt Sockets, um zu sehen, wie Sie es wollen. Zum Beispiel hören auflocalhost:5901
:<key>Sockets</key> <dict> <key>Listener</key> <dict> <key>SockNodeName</key> <string>localhost</string> <key>SockServiceName</key> <string>5901</string> </dict> </dict>
-
Erstelle
/Library/LaunchDaemons/com.apple.screensharing.launcher.plist
mit folgendem Inhalt:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.apple.screensharing.launcher</string> <key>LaunchOnlyOnce</key> <true/> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <false/> <key>ProgramArguments</key> <array> <string>/bin/launchctl</string> <string>load</string> <string>-F</string> <string>/Library/LaunchDaemons/com.apple.screensharing.plist</string> </array> </dict> </plist>
-
Ausführen
sudo launchctl load -w /Library/LaunchDaemons/com.apple.screensharing.launcher.plist
Danach werden die Rechte für die Bildschirmfreigabe ordnungsgemäß bereitgestellt, der Standard-Daemon wird nicht automatisch geladen und unser Launcher startet unseren benutzerdefinierten Daemon gewaltsam.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-12-21 17:29:49