Como alterar o compartilhamento de tela padrão / número da porta VNC no Mac OS X?

10

Existe alguma maneira de alterá-lo do padrão 5900 para outra porta?

    
por GJ. 02.06.2010 / 16:36

4 respostas

15

Na verdade, você pode mudar a porta padrão do servidor VNC da Apple no Mac OS 10.7 Lion e no 10.8 Mountain Lion. Para alterar a porta, você precisa editar o arquivo plist do servidor /System/Library/LaunchDaemons/com.apple.screensharing.plist (esse arquivo não existe em sistemas anteriores a 10.7 Lion).

Editar o arquivo requer privilégios root (sudo). No terminal, se você estiver familiarizado com vi ou vim , você pode digitar:

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

ou, se você não for, é melhor usar o nano :

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

Agora, tudo o que você precisa fazer é alterar a linha 34 (a que lê <string>vnc-server</string> ) para <string>nnnn</string> , em que nnnn é o número da porta que você deseja usar. Eu sei que parece estranho mudar um nome como "vnc-server" para um número, mas é assim que você tem que fazer. Eu incluí um exemplo abaixo, caso algo não esteja claro.

Para alterar a porta padrão para 54321, edite o arquivo plist com esta aparência:

...
<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>

Depois de salvar o arquivo, para que a alteração tenha efeito, desative o Compartilhamento de tela e ligue-o novamente no painel de preferências Compartilhamento ou, como alternativa, descarregue e recarregue o serviço usando estes comandos:

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.screensharing.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.screensharing.plist
    
por 10.09.2012 / 01:50
4

Eu posso confirmar, depois de encontrar este tópico pelo Google, que a edição de /etc/services para as portas "rfb" alterará as portas de escuta do servidor VNC.

Eu editei o arquivo e reiniciei (normalmente eu tentava reiniciar serviços ou descarregar o launchdeamon, mas eu estava tendo outros problemas também e não me incomodei). O iTeleport no meu iPad falhou ao conectar-se no 5900 e foi bem-sucedido na porta alta e sem privilégios que eu escolhi.

    
por 10.02.2014 / 17:37
3

Isso foi discutido em vários fóruns em apple.com e em macosxhints.com . A resposta curta é "você não pode mudar isso".

As respostas mais longas sugerem maneiras - três possibilidades:

  • Use o software alternativo do servidor VNC
  • Use um túnel ssh para redirecionar o tráfego de sua porta personalizada para 5900
  • Configure o mapeamento de porta em seu roteador para receber tráfego de entrada em uma porta diferente para ir para a porta 5900 em seu computador.
por 02.06.2010 / 20:06
1

Com base nas informações fornecidas por Greg neste tópico, escrevi um script bash que automatizará o processo de alteração da porta de escuta VNC do seu sistema. Funciona bem nos meus testes. Deixe-me saber se alguém tiver algum problema com isso.

#!/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='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
    
por 10.04.2015 / 08:39