1.
Servidor Samba
Para instalar un Servidor Samba he seguido la guía oficial de instalación para Ubuntu. Los
pasos a seguir son los siguientes.
- Primero, abrimos el terminal y escribimos los siguientes comandos para la
instalación de samba:
sudo apt update
sudo apt install samba
- Para comprobar que la instalación se ha realizado correctamente escribiremos el
siguiente comando:
whereis samba
Nos saldrá por pantalla la ruta donde está ubicados los archivos donde se ha instalado
samba:
samba: /usr/sbin/samba /usr/lib/samba /etc/samba /usr/share/samba
/usr/share/man/man7/samba.7.gz /usr/share/man/man8/samba.8.gz
Ahora continuamos con la configuración:
- Creamos una carpeta compartida. Siendo <username> tu nombre de usuario
mkdir /home/<username>/sambashare/
- Con el comando nano editaremos el archivo de configuración smb.conf.
sudo nano /etc/samba/smb.conf
Se nos abrirá en consola un archivo que podremos editar para editar la configuración que
nos sea conveniente:
Bajaremos al final del archivo y escribimos la siguiente información para la configuración de
la carpeta que creamos anteriormente:
[sambashare-nuria]
comment= Carpeta compartida en samba de Nuria
path = /home/nuria/sambashare
force user = smbuser
force group = smbgroup
signing = mandatory
create mask = 0664
force create mode = 0664
directory mask = 0775
force directory mode = 0775
public = yes
read only = no
Añadimos un comentario explicativo.(optativo)
Ponemos la ruta del directorio.
La configuración anterior sirve para que cualquier persona, ya sea en anónimo o con un
usuario registrado, pueda compartir lo que quiera en mi directorio Samba además de poder
acceder a lo que haya en él. Teniendo permisos de lectura y escritura.
Una vez hecho esto, guardamos la configuración con Crtl+O y salimos con Crtl+X.
- Para que la configuración anterior funcione hay que crear los usuarios y grupos
además de dar los permisos necesarios:
sudo groupadd --system smbgroup
sudo useradd --system --no-create-home --group smbgroup -s /bin/false
smbuser
sudo chown -R smbuser:smbgroup /home/nuria/sambashare
sudo chmod -R g+w /home/nuria/sambashare
- Reiniciamos el servidor Samba:
sudo service smbd restart
- Actualizamos las reglas que permitan el tráfico de Samba en el firewall:
sudo ufw allow samba
- Establecemos un usuario y contraseña para su uso:
sudo smbpasswd -a username
Por último para acceder a nuestro Samba, en Ubuntu, en el explorador de archivos, nos
conectamos al servidor de la siguiente manera:
\\ip-address\sambashare
Donde la ip-address es la ip del ordenador donde se encuentra la carpeta a la que quieres
acceder.
1. Servidor SSH
Para la instalación de un servidor SSH he seguido la siguiente guía de instalación para
Ubuntu y seguí los siguientes pasos:
- Primero actualizamos:
sudo apt update
- La instalación de este servidor SSH es muy sencilla, simplemente debemos poner
en un terminal la siguiente orden:
sudo apt install openssh-server
- Acto seguidos entramos en la configuración del servidor SSH:
sudo nano /etc/ssh/sshd_config
Una vez dentro del archivos lo tenemos que configurar de la siguiente manera(es opcional
pero recomendable cambiar el puerto ya que por defecto es 22 para todo el mundo):
Port 22422
PermitRootLogin prohibit-password
LoginGraceTime 30
MaxAuthTries 3
MaxStartups 3
AllowUsers nuria sergio
DenyUsers david alex
El tiempo de conexión y el número de intentos de conexión los modificas a tu gusto y los
usuarios permitidos y usuarios denegados son campos que debes añadir ya que no
aparecen aunque son opcionales.
Para el funcionamiento del servidor tenemos que permitir:
Port 22422
ListenAddress 0.0.0.0
Configurar la seguridad y el control de acceso:
IgnoreUserKnownHosts no
GatewayPorts no
AllowTcpForwarding yes
- Por último reiniciamos el servidor SSH:
sudo /etc/init.d/ssh restart
- Para conectarnos a un ps simplemente poner el comando:
-
ssh user@hostname
- Quedaría algo así:
2. Servidor VNC
Para la instalación y configuración de este servicio seguí esta guía.
Requisitos previos
Para completar este tutorial, necesitará lo siguiente:
● Un servidor Ubuntu 18.04 configurado siguiendo la guía de configuración inicial del
servidor Ubuntu 18.04, con un usuario sudo no root y un firewall.
● Un equipo local con un cliente VNC instalado que admita conexiones de VNC a
través de túneles SSH.
○ En Linux, puede elegir entre varias opciones, como vinagre, krdc, RealVNC o
TightVNC.
Paso 1: instalación del entorno de escritorio y el
servidor VNC
Por defecto, el servidor Ubuntu 18.04 no viene con un entorno de escritorio gráfico o un
servidor VNC instalado, por lo que empezaremos por instalarlos. Específicamente,
instalaremos paquetes para el entorno de escritorio Xfce más reciente y el paquete
TightVNC disponible en el repositorio oficial de Ubuntu.
En su servidor, actualice su lista de paquetes:
sudo apt update
Ahora, instale el entorno de escritorio Xfce en su servidor:
sudo apt install xfce4 xfce4-goodies
Cuando finalice la instalación, instale el servidor TightVNC:
sudo apt install tightvncserver
Para completar la configuración inicial del servidor VNC tras su instalación, utilice el
comando vncserver para configurar una contraseña segura y crear los archivos de
configuración iniciales:
vncserver
Se le indicará que introduzca y verifique una contraseña para acceder a su máquina de
forma remota:
Output
You will require a password to access your desktops.
Password:
Verify:
La contraseña debe tener entre seis y ocho caracteres de largo. Las contraseñas de más de
8 caracteres se reducirán automáticamente.
Una vez que verifique la contraseña, tendrá la opción de crear una contraseña de solo vista.
Los usuarios que inicien sesión con la contraseña de solo vista no podrán controlar la
instancia de VNC con su mouse o teclado. Esta es una opción útil si desea demostrar algo a
otras personas que utilizan su servidor VNC, pero no es un requisito necesario.
Luego, el proceso crea los archivos de configuración predeterminados que se requieren y la
información de conexión para el servidor:
Output
Would you like to enter a view-only password (y/n)? n
xauth: file /home/nuria/.Xauthority does not exist
New 'X' desktop is your_hostname:1
Creating default startup script /home/nuria/.vnc/xstartup
Starting applications specified in /home/nuria/.vnc/xstartup
Log file is /home/nuria/.vnc/your_hostname:1.log
Ahora, vamos a configurar el servidor VNC.
Paso 2: configuración del servidor VNC
El servidor VNC debe saber qué comandos ejecutar cuando se inicia. Específicamente,
VNC debe saber a qué escritorio gráfico deberá conectarse.
Estos comandos se encuentran en un archivo de configuración llamado xstartup en la
carpeta .vnc de su directorio principal. La secuencia de comandos de inicio se creó cuando
ejecutó vncserver en el paso anterior, pero crearemos una propia para abrir el escritorio
Xfce.
Cuando VNC se configura por primera vez, se abre como una instancia del servidor
predeterminada en el puerto 5901. Este puerto se llama puerto de visualización, y VNC se
refiere a él como :1. VNC puede abrir múltiples instancias en otros puertos de visualización,
como :2, :3, y así sucesivamente.
Debido a que vamos a cambiar la configuración del servidor VNC, primero, detenga la
instancia del servidor VNC que se está ejecutando en el puerto 5901 con el siguiente
comando:
vncserver -kill :1
El resultado debería tener este aspecto, pero verá un PID diferente:
Output
Killing Xtightvnc process ID 17648
Antes de modificar el archivo xstartup, realice una copia de seguridad del original:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Ahora, cree un nuevo archivo xstartup y ábralo en su editor de texto:
nano ~/.vnc/xstartup
Los comandos de este archivo se ejecutan automáticamente siempre que inicie o reinicie el
servidor VNC. Necesitamos que VNC inicie nuestro entorno de escritorio, si aún no está
iniciado. Añada estos comandos al archivo:
~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
El primer comando del archivo, xrdb $HOME/. Xresources, le indica al marco de trabajo de
la GUI de VNC que lea el archivo .Xresources del usuario del servidor. El archivo
.Xresources es donde un usuario puede realizar cambios a ajustes concretos del escritorio
gráfico, como los colores de la terminal, los temas del cursor y la renderización de fuentes.
El segundo comando le indica al servidor que inicie Xfce, que es donde encontrará todo el
software gráfico que necesita para administrar cómodamente su servidor.
Si esta configuración no funcionara y la pantalla te aparece en gris puede que tengas un
error como este:
Para comprobarlo solo tienes que ir a donde está ubicado el archivo log, en mi caso:
Home/nuria/.vnc/Nuria.log
Para corregir este error en el archivo de configuración se deberá poner los siguientes
comandos para forzar el inicio del xfce4:
~/.vnc/xstartup
#!/bin/bash
env -i /bin/sh -c "export PATH=$PATH;
export XAUTHORITY=$XAUTHORITY;
export DISPLAY=$DISPLAY;
export HOME=$HOME;
export LOGNAME=$LOGNAME;
export USER=$USER;
Para más información aquí.
Para garantizar que el servidor VNC pueda usar este nuevo archivo de inicio correctamente,
deberá hacerlo ejecutable.
sudo chmod +x ~/.vnc/xstartup
Ahora, reinicie el servidor VNC.
vncserver
Visualizará un resultado similar al siguiente:
Output
New 'X' desktop is your_hostname:1
Starting applications specified in /home/nuria/.vnc/xstartup
Log file is /home/nuria/.vnc/your_hostname:1.log
Con la configuración establecida, vamos a conectar con el servidor desde nuestra máquina
local.
Paso 3: conexión segura del escritorio de VNC
VNC no utiliza protocolos seguros cuando se conecta. Usaremos un túnel SSH para
establecer una conexión segura con nuestro servidor y, luego, le indicaremos a nuestro
cliente VNC que utilice ese túnel en vez de realizar una conexión directa.
Cree una conexión SSH en su equipo local que se reenvíe de forma segura a la conexión
localhost para VNC. Puede hacerlo a través de la terminal en Linux o macOS con el
siguiente comando:
ssh -L 5901:127.0.0.1:5901 -C -N -l nuria your_server_ip
El conmutador -L especifica las vinculaciones del puerto. En este caso, estamos vinculando
el puerto 5901 de la conexión remota con el puerto 5901 de su máquina local. El
conmutador -C permite la compresión, mientras que el conmutador -N le indica a ssh que no
queremos ejecutar el comando remoto. El conmutador -l especifica el nombre de inicio de
sesión remoto.
Recuerde sustituir nuria y your_server_ip con el nombre de usuario sudo no root y la
dirección IP de su servidor.
Si está usando un cliente SSH gráfico, como PuTTY, utilice your_server_ip para la conexión
IP y establezca localhost:5901 como un nuevo puerto reenviado en los ajustes del túnel
SSH del programa.
Una vez que el túnel se esté ejecutando, utilice un cliente VNC para conectar a
localhost:5901. Se le pedirá que autentique usando la contraseña que configuró en el Paso
1.
Una vez conectado, verá el escritorio Xfce predeterminado. Debería tener un aspecto similar
a esto:
Pulse CTRL+C en su terminal para detener el túnel SSH y regresar a su instrucción. Esto
también desconectará su sesión de VNC.
A continuación, vamos a configurar nuestro servidor VNC como servicio.
Paso 4: ejecución de VNC como servicio del sistema
A continuación, configuraremos el servidor VNC como un servicio de systemd para poder
iniciarlo, detenerlo y reiniciarlo según lo necesitemos, como cualquier otro servicio. Esto
también garantizará que VNC se inicie al reiniciar su servidor.
Primero, cree un nuevo archivo de unidad llamado /etc/systemd/system/[email protected]
con el editor de texto de su preferencia:
El símbolo @ al final del nombre nos dejará pasar un argumento que podemos usar en la
configuración del servicio. Lo usaremos para especificar el puerto de visualización de VNC
que queremos usar cuando administremos el servicio.
Añada las siguientes líneas al archivo. Asegúrese de cambiar el valor de User, Group,
WorkingDirectory y el nombre de usuario en el valor de PIDFILE para que coincidan con
su nombre de usuario:
/etc/systemd/system/[email protected]
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=nuria
Group=nuria
WorkingDirectory=/home/nuria
PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
El comando ExecStartPre detiene VNC si ya se está ejecutando. El comando ExecStart
inicia VNC y establece la profundidad del color a color de 24 bits con una resolución de
1280 x 800. También puede modificar estas opciones de inicio según sus necesidades.
Guarde y cierre el archivo.
A continuación, informe al sistema la existencia de un nuevo archivo de unidad.
sudo systemctl daemon-reload
Habilite el archivo de unidad.
El 1 tras el signo @ indica en qué número de pantalla debe aparecer el servicio, en este
caso, el valor predeterminado es :1,como se explicó en el paso 2.
Detenga la instancia actual del servidor VNC si aún se está ejecutando.
vncserver -kill :1
Luego, inícialo como iniciaría cualquier otro servicio de systemd.
sudo systemctl start vncserver@1
Puede verificar si ha comenzado con este comando:
sudo systemctl status vncserver@1
Si se inició correctamente, el resultado debería verse así:
Output
● [email protected] - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/[email protected]; indirect;
vendor preset: enabled)
Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s
ago
Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry
1280x800 :1 (code=exited, status=0/SUCCESS)
Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null
2>&1 (code=exited, status=0/SUCCESS)
Main PID: 22330 (Xtightvnc)
...
Ahora, su servidor VNC estará disponible cuando reinicie la máquina.
Inicie su túnel SSH de nuevo:
ssh -L 5901:127.0.0.1:5901 -C -N -l nuria your_server_ip
Luego, realice una nueva conexión usando el software de su cliente VNC con
localhost:5901 para conectarse con su máquina.
Otra opción para abrir un túnel ssh fuera de la terminal es en el propio programa de vinagre.
De la siguiente manera: