NoMachine (NX, FreeNX) – Acceso remoto en Ubuntu desde internet 4 Septiembre 2008
Posted by bushwaca in Acceso Remoto, Linux, Ubuntu.Tags: Acceso Remoto, Aplicaciones, Configuracion, Linux, Software, Ubuntu
trackback
NX nos permite acceder de manera remota y de manera visual como VNC pero con la diferencia de que es mas veloz y que lo hace a traves de SSH, lo cual lo hace mucho mas seguro. Otra gran diferencia es que accedemos a una nueva sesion en nuestro servidor por defecto (si queremos podemos hacerlo con la que esta en ejecucion con la opcion “shadow”), no como VNC en el cual accedemos a la sesion que se esta ejecutando, lo cual es otro punto a favor en cuanto a seguridad (tal vez en VNC se pueda tambien, eso no lo se). Es multiplataforma y altamente configurable. Si tu idea es controlar una PC de forma grafica en una LAN o desde internet esta es tu aplicacion.
NX es un programa informatico que realiza conexiones remotas X11 muy rapidas, lo que permite a los usuarios acceder a escritorios remotos incluso bajo conexiones lentas como las realizadas con modem.
NX realiza una compresion directa del protocolo X11, lo que permite una mayor eficiencia que VNC. La informacion se envia mediante SSH, por lo que toda la informacion que se intercambian servidor y cliente esta cifrada.
NX esta desarrollado por la empresa italiana NoMachine, que ha liberado el codigo. Existe una implementación libre de esta aplicación, llamada FreeNX.
Comencemos:
1 – Instalar SSH
Para poder usar NX deben tener instalado SSH en su servidor y cliente. SSH y OpenSSH-Server estan en los repos, pero si no saben como hacerlo pueden mirar aqui que explico como instalarlo y configurarlo (tambien explico como configurar el router por si quieren conectarse no solo desde su LAN). El link es de una entrada anterior de este blog y creo que esta bastante completo.
2 – Descargar el servidor
Descargan los paquetes de NX Free Edition for Linux desde la pagina de NoMachine NX . Ahi descargan los 3 paquetes “.deb” y los instalan en su servidor en la ruta “/usr/NX”. Para hacerlo, primero los descargan, los mueven a su carpeta “/home/usuario” (usuario es el nombre de su usuario), abren una consola y ponen:
sudo dpkg -i nxclient_3.2.0-14_i386.deb
sudo dpkg -i nxnode_3.2.0-13_i386.deb
sudo dpkg -i nxserver_3.2.0-16_i386.deb
3 – Configurar el servidor
Deben hacer unos cambio en la configuracion de SSH del servidor. Para ello pongan en consola:
sudo gedit /etc/ssh/sshd_config
En “AllowUsers” agreguen “nx”. Con esto estamos agregando como usuario a “nx”. Tanto el usuario “nx” como el usuario mediante el cual accederan a su sesion deben estar, de otra manera no podran acceder a su servidor, lo que quedaria algo asi por poner un ejemplo:
AllowUsers juanma amigo@201.180.241.21 nx
Y agreguen al final de todo el archivo la linea:
AuthorizedKeysFile /usr/NX/home/nx/.ssh/authorized_keys2
Reiniciamos ssh con:
sudo /etc/init.d/ssh restart
Comprobamos que todo funciona bien poniendo en consola:
sudo /usr/NX/bin/nxserver --status
Si va bien nos dira algo como esto:
NX> 900 Connecting to server …
NX> 110 NX Server is running.
NX> 999 Bye.
Si no nos sale esto del todo bien, no se preocupen… seguro es un problema de puertos. Lo mejor es que sigan leyendo.
4 – Configurar puertos del servidor
Si es que seguiste mi guia de SSH o eres un usuario paranoico de la seguridad seguramente cambiaste los puertos que trae por defecto SSH. Si lo hiciste hay que hacer unas ligeras modificaciones en los archivos node.cfg y server.cfg del NX, de lo contrario sigue con el otro punto. Si bien NX toma la configuracion de SSH debemos darle una manito para que lo haga bien:
a) Editamos el archivo server.cfg poniendo en consola
sudo gedit /usr/NX/etc/server.cfg
Ahi buscamos las lineas donde dice “SSHDPort” y “SSHAuthPort” y ponemos el puerto que configuramos para SSH y descomentamos la linea borrando el simbolo “#”, lo que quedaria algo asi:
SSHDPort= "4564"
SSHAuthPort = "4564"
Guardamos y salimos del editor
b) Editamos el archivo node.cfg poniendo en consola
sudo gedit /usr/NX/etc/node.cfg
Ahi buscamos las lineas donde dice “SSHDPort” y ponemos el puerto que configuramos para SSH (que es el mismo que pusimos en server.cfg) y descomentamos la linea borrando el simbolo “#”, lo que quedaria algo asi:
SSHDPort= "4564"
Guardamos y salimos del editor
c) Reiniciamos el servidor con:
sudo /etc/init.d/ssh restart
sudo /usr/NX/bin/nxserver --restart
5 – Instalar el cliente
Ahora vamos a la PC con la cual accederemos al servidor (cliente) y le instalamos el cliente de NX Free. Para ello o usamos el mismo que descargamos anteriormente (solo el paquete cliente) o lo hacemos nuevamente de la pagina de NoMachine NX . Desde la web oficial descargan solo el cliente de exactamente del mismo lugar que antes (antes descargamos el cliente, node y server) y lo instalan.
Pueden descargarlo, lo mueven a su carpeta “/home/usuario” (usuario es el nombre de su usuario), abren una consola y ponen sudo dpkg -i nxclient_3.2.0-14_i386.deb o cuando le dan click para descargar, en vez de descargar ponen abrir y listo.
6 – Configurar cliente
Para configurar el cliente vamos a “Aplicaciones” – “Internet” – “NXClient for Linux” – “NX Connection Wizard”. Ahi podemos accederemos a un Wizard donde podemos configurar los equipos remotos a los que queremos acceder.
Para configurarlo, debemos dar un nombre de sesion (“Mi conexion a casa”), en “Host” ponemos la IP (o el dominio DynDns si consiguramos nuestro router) del equipo remoto, en “Port” especificamos el puerto con el que se conectara (por defecto esta el “22″) . Luego especificamos el escritorio que usa el equipo (Gnome o KDE por ejemplo) y si queremos podemos darle incluso el tamaño a la ventana de nuestra sesion remota y ya estariamos.
El equipo remoto debe tener instalado tanto NXFree Server como el servidor SSH y ser accesible (pertenecer a nuestra VPN). Con este asistente podemos definir el acceso a tantos equipos como queramos.
7 – Conectarnos
Cada vez que nos queremos conectar vamos a “Aplicaciones” – “Internet” – “NXClient for Linux” – “NX Client For Linux”, ponemos el usuario y password del equipo remoto y ya estariamos dentro de ese PC.
Es posible que la primera vez que queramos conectarnos no podamos hacerlo si lo hacemos desde internet, eso es porque puede que tengamos algun problema para obtener la llave publica. Por eso que lo recomendable es que lo hagamos desde la LAN la primera vez.
Aca les pongo una captura:
Bueno, hasta al prox y espero que no sea para acceso remoto ajaja.




Muy bien explicado gracias
Me alegro de que te fue util.
Saludos y gracias por el comentario.
hola, esta muy bueno el post, pero tengo un inconveniente, loguea por que no se cual es el usuario por defecto, y la pass
No entiendo tu consulta. Si logueas es porque estas dentro de la pc… como es que no tienes el usuario y la pass?
Si te da la opcion para loguearte y no puedes hacerlo revisa esto:
En la parte que dice “AllowUsers juanma amigo@201.180.241.21 nx” (que es el punto 3) juanmma es un usuario ya existente de esa pc que hace de servidor. Es decir que si yo me siento delante de esa pc, para poder ingresar al SO uso al usuario juanma para loguearme. Seguramnete tu te loguearas con otro nombre de usuario, por eso cambia juanma por TU usuario del servidor o cualquiera que exista en el (los permisos que tengas al ingresar por ssh dependeran de los privilegios que tenga ese usuario). Es decir que agregue al paramentro “AllowUsers” un usuario que ya existia en la pc que hace de servidor. Tu debes hacer lo mismo.
Ahora para loguearme con ssh uso ese usuario es decir juanma y como pass uso la pass del usuario juanma, la misma con la que me logueo al SO.
Espero que ayude esto.
Saludos.
Buenas compañero,
Primero de todo felicitarte por tu blog y por el articulo.
Lo he seguido paso a paso y he logrado instalar el nx. El problema viene al conectarse. Me devuelve el siguiente error:
NX> 203 NXSSH running with pid: 10242
NX> 285 Enabling check on switch command
NX> 285 Enabling skip of SSH config files
NX> 285 Setting the preferred NX options
NX> 200 Connected to address: 95.17.59.9 on port: 22
NX> 211 The authenticity of host ‘userXXX.dyndns.org (IPXXX)’ can’t be established.
RSA key fingerprint is 92:ba:a3:c9:f1:d8:9b:b8:cd:79:31:….XXX.
Are you sure you want to continue connecting (yes/no)?
Failed to add the host to the list of known hosts (/home/userXXX/.ssh/known_hosts).
NX> 202 Authenticating user: nx
NX> 204 Authentication failed.
Sabes que es lo que estoy haciendo mal ? Muchas gracias por tu ayuda y tu aportación a la comunidad.
Uff bueno… es dificil esto sin la pc en al mano por el hecho de que no sigo exactamente tu configuracion pero por el mensaje podemos decir esto.
1) Nx intenta conectarse a la ip 95.17.59.9 por el puerto 22. Fijate si le cambiaste el puerto a ssh o lo dejaste como va por defecto, de ser asi arreglalo.
2) Esta intentando conectarse a un dominio llamado “userXXX.dyndns.org” pero no puede conectarse. Tienes abrierto los puertos de tu router? Digamos…. si ssh se conecta por el puerto 45 abre ese puerto en tu router. Tambien tienes que haber sincronizado tu dominio de dyndns con la ip de tu router antes.
3) El usuario nx intenta autenticarse pero no puede. Agregaste al servidor al usuario nx en la configuracion de ssh? De no ser asi agregalo.
4) Cuando te dice “Failed to add the host to the list of known hosts (/home/userXXX/.ssh/known_hosts)” es un problema de la llave publica. En realidad eso puede ser un problema de ssh que en el post de ssh lo explico.
Como recomendacion:
Lo mejor es primero conectarse por lan para ver de que todo funciona bien.
Para ir paso por paso y no sufrir muchos problemas podrias intentar primero intentar hacer la guia de ssh para ver si algo no va bien. Por las dudas aqui la guia.
Saludos y cualquier cosa me consultas.