Difference between revisions of "VNC"

From Noah.org
Jump to navigationJump to search
Line 33: Line 33:
 
   forever # keep listening for new connections after a client disconnects.
 
   forever # keep listening for new connections after a client disconnects.
  
=== SSH Tunneling ===  
+
=== SSH Tunneling Simple ===  
Say you want to see the X11 desktop of a remote machine.
+
This is about the easiest way to connect to a remote machine via VNC.
Fire up SSH. This command does two things. It creates a tunnel for port 5900 between the remote and local host. It also starts x11vnc on the remote host.
+
Login to the remote server and start `vncserver`.
 +
<pre>
 +
vncserver -SecurityTypes None
 +
</pre>
 +
On your local server start `xvncviewer` with the -via option.
 +
<pre>
 +
xvncviewer -via remotehost.example.com localhost:1
 +
</pre>
  
  ssh -L 5900:localhost:5900 username@remote.example.com 'x11vnc -rfbport 5900 -display :0 -localhost'
+
This automatically sets up local to remote port forwarding.
 +
Note that this is best for quick, one-time use sessions because
 +
there is no encryption and no password is required to connect.
 +
 
 +
=== SSH Tunneling Longer ===
 +
Say you want to see the existing X11 desktop of a remote machine behind a firewall. The following command does two things. It creates a tunnel for port 5900 between the remote and local host. It also starts x11vnc on the remote host.
 +
 
 +
<pre>
 +
ssh -L 5900:localhost:5900 username@remote.example.com 'x11vnc -rfbport 5900 -display :0 -localhost'
 +
</pre>
  
 
Now fire up a vnc viewer on your local host:
 
Now fire up a vnc viewer on your local host:

Revision as of 12:03, 2 June 2007


Create a new X11 display and share via VNC

This creates a new X11 display that is shared via VNC: `vncserver`

Share your existing X11 desktop with VNC

If you want to expose your currently running X11 session over VNC use `x11vnc`.

simple

Just run it from the command-line with no arguments and then anyone can use a vnc client to use your desktop:

 x11vnc

add a password

If you want to add a password to make it a little more secure:

 x11vnc -passwd MYPASSWORD

It has lots of options to make password connections more secure, but this works well enough for a quick and dirty session.

Keep Listening

After the first client connection has exited x11vnc will also exit. If you want to keep the server running so that you can connect multiple times then use the -forever option.

 x11vnc -forever

.x11vncrc

You can save all these options in a dotfile called .x11vncrc:

 forever # keep listening for new connections after a client disconnects.

SSH Tunneling Simple

This is about the easiest way to connect to a remote machine via VNC. Login to the remote server and start `vncserver`.

vncserver -SecurityTypes None

On your local server start `xvncviewer` with the -via option.

xvncviewer -via remotehost.example.com localhost:1

This automatically sets up local to remote port forwarding. Note that this is best for quick, one-time use sessions because there is no encryption and no password is required to connect.

SSH Tunneling Longer

Say you want to see the existing X11 desktop of a remote machine behind a firewall. The following command does two things. It creates a tunnel for port 5900 between the remote and local host. It also starts x11vnc on the remote host.

ssh -L 5900:localhost:5900 username@remote.example.com 'x11vnc -rfbport 5900 -display :0 -localhost'

Now fire up a vnc viewer on your local host:

 vncviewer localhost:0

Note that you have to have port 5900 available on the remote and local hosts. VNC normally defaults to 5900, but I like to explicitly set the port so that I will easily see the error if the port is already taken.

text mode VNC

Use linuxvnc to expose a text terminal to VNC clients. See also vncommand.

Errors

channel 2: open failed: connect failed: Connection timed out

This is almost certainly due to a firewall restriction on the remote hosts that blocks the VNC port even for localhost connections. Check the iptables on the remote host for restrictions: `iptables -L`.

You may not see this error immediately. Running vncviewer may appear to freeze and do nothing. It will time-out after a few minutes. The annoying thing is that the SSH tunnel will not fail despite the fact that iptables is blocking connections to the localhost.

vncserver: couldn't find "xauth" on your PATH.

The PATH on the remote server was not set. Envoke the remote command something like this:

    'PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin vncserver'

SSH starts the remote command without envoking your environment, so you not have /usr/X11RB/bin in the PATH. Run `which xauth` to be sure you have to corrent path.