Cygwin/X User's Guide
Prev | Chapter 3. Using Cygwin/X | Next

# Displaying remote clients

Displaying remote X clients with Cygwin/X is identical to displaying remote X clients with any other X Server.

It is recommended that you use the secure method of tunnelling the X connection over ssh.

Alternatively, you can use the host-based access control provided by the X server, connecting to the remote machine using telnet or rsh and directing clients to connect to the server by setting the DISPLAY environment variable. This method is insecure and not recommended.

## Secure ssh

On your Windows machine:

1. Make sure you have the `openssh` package installed.

2. Launch Cygwin/X

3. Ensure the DISPLAY environment variable is set correctly. (This step is not neccessary if you are entering your commands into an X terminal, as DISPLAY must already be set in that case)

       $ export DISPLAY=:0.0

4. Run the ssh command to connect to the remote host:

       $ ssh -Y username@remote_hostname_or_ip_address

5. Enter your password when prompted by ssh.

6. Your ssh session should now show you a shell prompt for your remote machine.

   > Note: The ssh server will automatically set the DISPLAY environment variable appropriately, typically to something like `localhost:10.0`, so clients will connect to a proxy X11 display on the remote host from which the X11 protocol will be forwarded over ssh to your X server.

   > If your login scripts unconditionally set DISPLAY to something else, this will break X11 forwarding.

7. You can now launch remote X clients in your ssh session, for example:

       $ xterm &

   will launch an xterm running on your remote host that will display on your Cygwin/X screen.

8. Launch other remote clients in the same manner. I recommend starting the remote clients in the background, by appending `&` to the command name, so that you don't have to open several ssh sessions.

> Note: By default, the OpenSSH server does not allow forwarded X connections. This must be configured on the remote host by adding `X11Forwarding yes` to the `sshd_config` configuration file. The OpenSSH server must be restarted or SIGHUP'ed to re-read the configuration file after it is changed.

> Note: The OpenSSH server requires the xauth command to be available to forward X connections. Consequently, it must be installed on the remote host.

## Insecure telnet or rsh (Not recommended)

An example of connecting remote clients using host-based authorization.

On your Windows machine:

1. Make sure you have the `inetutils` package installed (for telnet) or `rsh` package (for rsh).

2. Launch Cygwin/X

   > Note: You must provide the `-listen tcp` option to startx or startxwin so that the X server will listen for TCP/IP connections. (See this FAQ for more details).

3. In an X terminal, use the xhost command to allow the remote host access to make connections to your X server:

       $ xhost remote_hostname_or_ip_address

4. Run the telnet or rsh command to connect to the remote host:

       $ /usr/bin/telnet remote_hostname_or_ip_address

   or

       $ rsh remote_hostname_or_ip_address

   > Note: Use the explicit path to ensure that Cygwin's telnet is run instead of Microsoft's telnet. Microsoft's telnet cannot read input or display output correctly when run from a Cygwin shell.

5. Login to your remote machine

6. Ensure the DISPLAY environment variable is set correctly in your remote session.

       $ export DISPLAY=windows_hostname_or_ip_address:0.0

7. You can now launch remote X clients in your ssh session, for example:

       $ xterm &

   will launch an xterm running on your remote host that will display on your Cygwin/X screen.

8. Launch other remote clients in the same manner. I recommend starting the remote clients in the background, by appending `&` to the command name, so that you don't have to open several telnet or rsh sessions.

> Note: This is insecure because (1) when you log in, your username and password may be transmitted in clear across the network between you and the remote host (2) the X protocol is transmitted in clear across the network between you and the remote host, and (3) you have allowed any user on the remote host to connect to your X server and monitor your X session. For these reasons, use ssh forwarding, if at all possible.

Prev | Home | Next
Shared memory support | Up | Remote sessions via XDMCP