Carnegie Mellon

Computer Science Department |
 |
 |
 |
 |
 |
 |
 |
| |
|
|
15-410 VNC Documentation
Motivation
During late 2025, the traditional advice for macOS users
(which had been: "use XQuartz") began to decay in utility,
because something about the new window system for
macOS 26 "Tahoe" caused problems with XQuartz,
which seemed similar to
Issue #438
and
Issue #450.
But also
Issue #436
seemed disquieting.
"Virtual Andrew"
is one approach, but VNC can be used as well.
Approach
The approach we are documenting is similar to the traditional
"X forwarding over SSH" approach,
but it should work if the machine
doesn't have a working X server.
Instead of forwarding X over SSH,
we will forward the
"virtual frame buffer" protocol defined by
the VNC project
at
Olivetti Research
in the 1990's.
Simics on an Andrew Linux server
will draw on a virtual X display;
on your machine,
an SSH client will be invoked to proxy a local TCP port
to a Unix-domain socket on that Andrew Linux server;
and then a VNC client on your machine will
connect to that local proxy port.
Implementation
macOS
Copy 410vnc_proxy onto your machine:
mkdir -m 0700 -p $HOME/bin
scp -p de0u@linux.andrew.cmu.edu:410/bin/410vnc_proxy $HOME/bin
Replace "de0u" with your Andrew username!
Note that this may require use of a VPN client.
SSH into LINUX.ANDREW.CMU.EDU.
Note that this may require use of a VPN client.
On the LINUX.ANDREW server,
type hostname and remember the name of
this specific machine that was chosen for you at
random.
On the LINUX.ANDREW server,
run 410vnc_setup and follow the directions.
On your Mac, run:
~/bin/410vnc_proxy de0u linux-99.andrew.cmu.edu
Replace "de0u" with your Andrew username and replace
"linux-99" with the specific server name determined above.
This will not appear to do much, but keep it running,
because it is the proxy service.
Again note that this may require use of a VPN client.
On your Mac, tap on the Finder icon in your dock
and then invoke Command-K
(or the "Go", "Connect to Server..." menu item),
then connect to
vnc://localhost:5901.
Hopefully you will be prompted for a password;
enter the low-quality password chosen earlier.
See Usage below.
In the future it is not necessary to repeat the steps of
410vnc_setup
and
determining
a specific LINUX.ANDREW server.
On your client machine, start up 410vnc_proxy
and then use the Finder to launch the VNC client.
Use a VPN client as appropriate.
Windows
Note that in order to launch a program downloaded from
the Internet,
it may be necessary to use the
"Unblock-File cmdlet".
Note that all of this relies on PowerShell
(the modern "PowerShell", version 7 or higher,
sometimes known as "PowerShell Core",
not the old "Windows PowerShell", such as version 5.1).
Here is information on
obtaining PowerShell on Windows.
Install a VNC client.
Success has been reported with
TightVNC.
If you do use TightVNC,
it may be best to select a "Custom" installation
and choose "Entire feature will be unavailable" for the
"TightVNC Server" component.
Copy 410vnc_proxy.ps1 onto your machine:
scp de0u@linux.andrew.cmu.edu:410/bin/410vnc_proxy.ps1 .
Replace "de0u" with your Andrew username!
Note that this may require use of a VPN client.
SSH into LINUX.ANDREW.CMU.EDU.
Note that this may require use of a VPN client.
On the LINUX.ANDREW server,
type hostname and remember the name of
this specific machine that was chosen for you at
random.
On the LINUX.ANDREW server,
run 410vnc_setup and follow the directions.
On your machine, run:
.\410vnc_proxy.ps1 de0u linux-99.andrew.cmu.edu
Replace "de0u" with your Andrew username and replace
"linux-99" with the specific server name determined above.
This will not appear to do much, but keep it running,
because it is the proxy service.
Again note that this may require use of a VPN client.
Launch the TightVNC client,
then connect to
localhost::5901.
Hopefully you will be prompted for a password;
enter the low-quality password chosen earlier.
See Usage below.
In the future it is not necessary to repeat the steps of
410vnc_setup
and
determining
a specific LINUX.ANDREW server.
On your client machine, start up the 410vnc_proxy
PowerShell script,
then launch the VNC client.
Use a VPN client as appropriate.
Ubuntu
Install a VNC client, for example the VNC Viewer of TightVNC:
$ sudo apt-get install xtightvncviewer
Copy 410vnc_proxy onto your machine:
mkdir -m 0700 -p $HOME/bin
scp -p de0u@linux.andrew.cmu.edu:410/bin/410vnc_proxy $HOME/bin
Replace "de0u" with your Andrew username!
Note that this may require use of a VPN client.
If not already, edit your .bashrc
or whatever to permanently place $HOME/bin
on $PATH.
SSH into LINUX.ANDREW.CMU.EDU.
Note that this may require use of a VPN client.
On the LINUX.ANDREW server,
type hostname and remember the name of
this specific machine that was chosen for you at
random.
On the LINUX.ANDREW server,
run 410vnc_setup and follow the directions.
On your Linux machine, run:
~/bin/410vnc_proxy de0u linux-99.andrew.cmu.edu
Replace "de0u" with your Andrew username and replace
"linux-99" with the specific server name determined above.
This will not appear to do much, but keep it running,
because it is the proxy service.
Again note that this may require use of a VPN client.
On your Linux machine,
$ vncviewer :1
Hopefully you will be prompted for a password;
enter the low-quality password chosen earlier.
See Usage below.
In the future it is not necessary to repeat the steps of
410vnc_setup
and
determining
a specific LINUX.ANDREW server.
On your client machine, start up 410vnc_proxy
and then use the Finder to launch the VNC client.
Use a VPN client as appropriate.
Usage
If you end up with a desktop that has a quirky
background image of gigantic penguin skyscrapers
surrounding the Earth,
probably a good way to get a terminal window
is to click at the lower left of the screen
and choose either "urxvt" or "urxvt (login shell)".
When you're done, if you click on the button at the
lower left and pick "Logout",
that should clean up processes running on the Andrew
Linux server and kill off the proxy.
Then you can disconnect your VNC client.
Going forward, it is best to continue using the same
LINUX.ANDREW machine that was randomly
chosen for you the first time.
Notes
You can add parameters to end of the 410vnc_proxy
command line. Examples follow.
- -geometry 1024x768
- This can be used to specify the size of the virtual desktop.
|