El acceso a los KVMs de los servidores suele ser problemático incluso en sistemas mas mainstream como Windows o Linux, en este artÃculo utilizaremos el binario de Linux mediante la compatibilidad Linux-FreeBSD de este modo seremos capaces de acceder sin problemas al 99% de KVMs del mercado.
Debemos tener en cuenta que el port linux-oracle-jdk18 precisa de acceso a ciertas partes del sistema, según nuestra configuración de seguridad es posible que un usuario regular no pueda acceder, tenemos dos opciones, deshabilitar la medida de seguridad o ejecutar javaws como root mediante sudo.
Para deshabilitarlo:
security.bsd.unprivileged_proc_debug=1
Si optamos por las solución mediante sudo:
kr0m ALL=(ALL) NOPASSWD: /usr/local/linux-oracle-jdk1.8.0/bin/javaws
kr0m ALL=(ALL) NOPASSWD: /usr/local/linux-oracle-jdk1.8.0/bin/jcontrol
Yo personalmente utilizaré sudo.
Algunos de los errores que suelen presentar son:
no ikvm64 in java.library.path
No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
Disabling Java as it is too old and likely to be out of date. To reenable use jcontrol utility
El primero se debe a que el applet solo es compatible con Windows, MacOSX y Linux por lo tanto busca binarios que en FreeBSD no existen, para resolver el problema tendremos que utilizar el binario de Java de Linux mediante la compatibilidad de binarios de FreeBSD .
Cargamos el módulo de compatibilidad con Linux tanto para 32 como para 64 bits:
kldload linux64
Comprobamos que ambos módulos estén cargados:
13 2 0xffffffff8425f000 3df60 linux.ko
24 1 0xffffffff84319000 35b20 linux64.ko
Instalamos los binarios y librerÃas base de Linux:
Habilitamos la compatibilidad en el boot:
linux_enable="yes"
El único modo de instalar oracle-jdk de Linux es mediante ports ya que se trata de un software restringido por temas de licencias:
RESTRICTED: Redistribution of repackaged binaries not permitted
A package is not available for ports marked as: Forbidden / Broken / Ignore / Restricted
No hay problema en mezclar paquetes binarios y ports en este caso porque este software solo está disponible mediante ports, además no se instala en el sistema como tal si no que se instala en el directorio donde residen los binarios de Linux.
Instalamos los requisitos previos:
Antes de compilar el port hay que bajarse un fichero de la web de Oracle :
jdk-8u241-linux-x64.tar.gz
NOTA: La versión del fichero irá cambiando con el paso del tiempo, para averiguar que versión intentaremos compilar el port tal y como se indica unos pasos mas abajo y él mismo nos mostrará por pantalla la versión a descargar.
Lo descargamos en el directorio:
Compilamos e instalamos el port linux-oracle-jdk18
make install clean
Java intentará obtener cierta información del sistema accediendo al directorio proc de Linux, para que esta información esté disponible hay que cargar el módulo linprocfs y montar el directorio /compat/linux/proc.
Cargamos el módulo linprocfs
Editamos el fstab:
linprocfs  /compat/linux/proc  linprocfs  rw  0  0
Montamos el directorio:
En teoria se puede configurar el navegador para que abra el fichero directamente con el binario de Linux pero yo prefiero guardar el fichero y abrirlo manualmente:
Normalmente el acceso al KVM es necesario en algún tipo de emergencia donde necesitamos acceso rápido al servidor, para tal fin yo utilizo un script muy simple en bash:
#!/usr/bin/env bash
if [ $# -eq 0 ]; then
echo "ERROR: No arguments supplied"
exit
fi
sudo /usr/local/linux-oracle-jdk1.8.0/bin/javaws -verbose $1
Tan solo tendremos que pasarle el nombre del fichero:
El segundo error sobre protocolos de cifrado se solventa permitiendo todos los protocolos, lo sé será inseguro pero mejor que no poder acceder cuando hay un apuro.
Editamos el fichero de configuración de Java y comentamos la sentencia que deshabilita algoritmos:
#jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
El tercer error se puede solucionar whiletlisteando la URL de conexión:
Nos dirigimos a la pestaña Security y añadimos las URLs de los KVMs, es importante destacar que hay que añadir tanto http como https incluso si el acceso es https.
Otra opción interesante es habilitar la consola de Java ya que de este modo podremos ver los errores con mas detalle: