OSX: Screen Sharing over the internet

Here’s a quick write-up describing how to connect to your Mac at home from your Mac at work (or any other Mac…).


1) User access with administrator’s rights on your remote OS X computer.

2) An Secure Shell (SSH) client on your local computer. On Windows, Puttyis a common and free version. Linux and MAC OS X, by default, come with SSH.

3) A VNC viewer client on your local computer.  In our case, we’ll using Screen Sharing. You won’t find it in the finder; it’s hidden here:

/System/Library/CoreServices/Screen\ Sharing.app

4) Network access to the SSH service on your remote machine.  This requires

a)  You know your remote machine’s hostname or IP address.
b)  Being behind the firewall, having VPN access, or being accessible to the public Internet (i.e. no firewall).

How to Remotely Turn On (and off) OS X Screen Sharing

This procedure keeps security in mind.  The idea is to turn on screen sharing while you need it, and then turn it off when you’re done.

1)  SSH into your remote OS X machine with an administrator’s log in and password.

2) Enable Remote Desktop (a.k.a. Screen Sharing, a.k.a. VNC) with this command:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -on -clientopts -setvnclegacy -vnclegacy yes -clientopts -setvncpw -vncpw password -restart -agent -privs -all

3) Login using a VNC client. You can use Screen Sharing or Chicken of the VNC (see tip below).
Your password is “password” (see the -vncpw flag in the above command;  you can — and should — change this).

4) When you are done, turn of screen sharing using your SSH session:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -configure -access -off

Problems connecting with your VNC client, like Chicken of the VNC?

Set your remote display settings to greyscale (to speed up things) or ‘Let server decide). Anything lower than ‘thousands’ won’t work.

defaults write com.apple.ScreenSharing controlObserveQuality 2