OpenSolaris VNC server configuration


This is one of several, little, quick notes about OSOL config. I have done several installs now, and each time I forget some of the little things.  That’s what a Blog is for though, right?  There are lots of sites describing this online, so it’s not tough to find.  I just wanted to find it easier on my own site.

I am using OSOL 2009.06 in this, might change a bit on other versions.

1. Install the service/pkg if it is not already. I think it is though. I think I just had to enable it on 2009.06.

2. Edit the service.  There’s probably an easier way, but this is an example of how I learned one way and stuck to it.  And in OSOL, like Linux, there’s probably twenty different ways to do something.

svccfg -s xvnc-inetd

editprop

There are two lines I like to change. 1. is to add the WAIT for persistent connections.  2. Geometry, so I have a larger vnc window.  All I do is uncomment and add geometry and replace false with true.

setprop inetd_start/exec = astring: /usr/X11/bin/Xvnc -geometry 1280x800 -inetd -query localhost -once securitytypes=none

    

setprop inetd/wait = boolean: true

 

 
3. Edit /etc/X11/gdm/custom.conf  – add these lines.

[security]

DisallowTCP=false

AllowRoot=true

AllowRemoteRoot=true

 

[xdmcp]

Enable=true


4. Last, restart the services.  First I do a “svcadm disable xvnc-inetd gdm”, which will kill your X session and take you to a prompt.  Then I login and do, “svcadm enable -s xvnc-inetd gdm”, which should start up the login window again.  You should be able to use a vnc client to access port 5900 on your server and login.
 
 
From this point, I use plink in a batch file with Ultra-VNC to automate an SSH login to my system securely. (Well, not uber-secure. I have my password saved in this file. There are better ways to handle that.)  I am curious to know if anyone else out there has better scripts for this.
 
Make sure you edit the properties for your system and you have Ultra-VNC installed. Here’s the batch file:
@echo off

rem IP of the server

set SVR=1.1.1.1

 

rem SSH port, update your sshd_config to match

set SSHPORT=222

set SSHUSER=username

set SSHPW=passwdnotshownhere

 

 

rem this is the port on your system, not the server

set LPORT=5992

set LIP=127.0.0.92

 

rem this is the port on the server, below should work by default

set RPORT=5900

set RIP=127.0.0.1

 

rem Path to Uvnc, maybe other vnc clients will work too

rem Just update the cmd below

set VNCPATH=C:\Program Files\UltraVNC

set VNCCMD=%VNCPATH%\vncviewer.exe

 

rem Have plink/pskill in your path or in the same dir as this script

start plink -ssh -P %SSHPORT% %SVR% -l %SSHUSER% -pw %SSHPW% -C -v -batch -L %LIP%:%LPORT%:%RIP%:%RPORT% -T -N 

CHOICE /N /T 7 /D Y > NUL

"%VNCCMD%" %LIP%::%LPORT%

CHOICE /N /T 2 /D Y > NUL

pskill plink.exe

In the above, I have plink and pskill in path, you may need to provide the full path if not.  Pskill is Sysinternals tool from Microsoft.  I set a custom LPORT and LIP for each server I connect to. This way I can have several at once.  But be warned, pskill will kill all plink connections. That means, it will close all your VNC connections if you even close one.  Probably a better script can be made to handle the individual connections.
 
Also note, there’s no way to accept the host key on your first plink connection. I use Putty to login once, which saves the host key.  Then plink will work using that cached key.