Saltar al contenido

Agregador de Contenidos Agregador de Contenidos

Minibian

Bienvenido a la guía de configuración de la distribución Linux MINIBIAN para la Raspberry Pi.

  1. ¿Por qué elegir MINIBIAN?
  2. Cómo grabar la imagen a la tarjeta SD
  3. Configurar la RED
  4. Cómo acceder por SSH
  5. Cambiar el nombre del sistema
  6. Cambiar el idioma y la distribución de teclado
  7. Redimensionar la partición 2 para ocupar toda la SD
  8. Desactivar root y utilizar sudo
  9. Generar nuevas claves SSH

 

1. ¿Por qué elegir MINIBIAN?

MINIBIAN es una distribución reducida que pretende servir de base para proyectos con la Raspberry Pi. Cuando decimos reducida, queremos decir por ejemplo que ni siquiera trae entorno gráfico, sin embargo ya viene con el servicio SSH activado para poder acceder remotamente. De hecho la versión probada(2015-11-12), apenas ocupa los 450MB por lo que entra de sobra en una tarjeta de memoria de 1GB. A continuación se enumeran algunas de sus características:

Distribución MINIBIAN(Raspbian “Jessie” based)
Fichero 2015-11-12-jessie-minibian.tar.gz
SHA-1 0ec01c74c5534101684c64346b393dc169ebd1af
Versión Febrero 2015
Fecha de lanzamiento 2015-11-12
Usuario / Contraseña root / raspberry
Página web http://sourceforge.net/projects/minibian
Kernel version 4.1.7+ #817
Raspberry Pi soportadas RPi B, RPi B+ y RPi 2B
 Varios - Arranca en unos 12 segundos(probado en una RPi 2B)
- Recién iniciada sólo hace uso de unos 58 MB de RAM.
- Utiliza unos 450 MB de disco por lo que entra de sobra en una tarjeta SD de 1GB.
- Optimizado los parámetros del sistema de ficheros en ext4.
- La swap está desactivada, es decir, no hay partición de swap.
- Cliente DHCP habilitado, basta conectarla a la red para que se configure su IP.
- Servicio SSHD activado, lo que permitirá conectarnos remotamente.

Por estas características es una distribución que se adapta para utilizarla en sistemas empotrados o aplicaciones de servidor(NAS, servidores web, aplicaciones electrónicas, etc.).

 

2. Cómo grabar la imagen a la tarjeta SD

Lo primero que necesitamos es el fichero de imagen que podemos descargar desde aquí. Obtenemos un fichero con extensión ".tar.gz", en nuestro caso "2015-11-12-jessie-minibian.tar.gz". Lo primero es ver si la suma de comprobación SHA-1 del fichero es correcta, esto nos asegura que el fichero no está corrupto por algún error en la descarga o por un error de copia a otro dispositivo. Ejecutamos la siguiente orden:

$ shasum 2015-11-12-jessie-minibian.tar.gz
0ec01c74c5534101684c64346b393dc169ebd1af 2015-11-12-jessie-minibian.tar.gz
$ _

Vemos que la orden genera un número muy largo en hexadecimal el cual tenemos que comprobar que coincide con el de la tabla del apartado anterior. Si utilizamos otra versión de MINIBIAN, los números de comprobación se obtienen de la propia página de descargas pulsando en la "i" de información:

En lugar de utilizar SHA1 vemos que también podemos utilizar la suma MD5, es indiferente y sirven para lo mismo, tan sólo hay cambiar la orden shasum por md5sum.

Antes de introducir la tarjeta SD para grabar la imagen, tenemos que saber qué nombre de dispositivo le va a asignar el sistema, para ello, con la tarjeta fuera del lector ejecutamos la siguiente orden:

Si la orden "lsblk" no está disponible en su sistema pruebe con:
"ls -l /dev/sd*" ó "mount | grep dev/sd"

$ lsblk -dn
sda    8:0    0 119,2G  0 disk
sdb    8:16   0   3,7T  0 disk
sr0   11:0    1  1024M  0 rom
$ _

Introducimos la tarjeta, esperamos unos segundos a que la reconozca el sistema y volvemos a ejecutar la misma orden:

$ lsblk -dn
sda    8:0    0 119,2G  0 disk
sdb    8:16   0   3,7T  0 disk
sde    8:64   1   1,9G  0 disk
sr0   11:0    1  1024M  0 rom
$ _

Por comparación vemos que el nuevo nombre que aparece es "sde" y observando el valor del tamaño de 1.9G confirmamos que ese es el nombre de dispositivo asignado pues coincide con que la tarjeta utilizada es de 2GB y que el programa a redondeado a unos 1.9GiB(2.000.000.000/1024/1024/1024=1,86GiB).

Ahora ya podemos descomprimir la imagen directamente a la tarjeta SD. Para ello hay que ejecutar la siguiente orden con permisos de root, teniendo en cuenta que al final de la orden, donde pone sdX, tenemos que sustituirlo por el nombre averiguado en el paso anterior:

ADVERTENCIA: La orden "dd" que se utiliza a continuación es peligrosa, puede destruir la información de otros discos si no se usa con cuidado. Debe asegurarse al 100% que el nombre de dispositivo "/dev/sdX" que ponga, es el que hace referencia a su tarjeta SD. Por lo general para estos casos el nombre nunca va a ser el de las primeras letras: "/dev/sda", "/dev/sdb" o "/dev/sdc". Además para mayor seguridad no tenga ningún otro dispositivo USB o tarjeta de memoria introducida en el equipo cuando ejecute esta orden. ¡¡¡QUEDA ADVERTIDO!!!

# tar xzpvOf 2015-11-12-jessie-minibian.tar.gz 2015-11-12-jessie-minibian.img | dd of=/dev/sdX
2015-11-12-jessie-minibian.img
1626112+0 registros leídos
1626112+0 registros escritos
832569344 bytes (833 MB) copiados, 297,199 s, 2,8 MB/s
# _

El fichero ".tar.gz" ocupa 208.9MB pero el de su interior que estamos descomprimiendo "2015-11-12-jessie-minibian.img" ocupa 833MB, por lo que la orden anterior tardará unos minutos en terminar, en mi caso tardó unos 4 minutos aunque depende de la velocidad de escritura de la tarjeta SD. Si su lector tiene algún "led" de actividad verá que este parpadea durante el proceso.

Cuando la orden termina muestra el resumen de los bytes copiados, es importante comprobar en este resumen que se copiaron los 833MB y no aparece ningún fallo pues en ocasiones, se pueden dar errores de escritura teniendo que repetir el proceso. En mi caso cuando hago esta operación, en algunas ocasiones aparecen errores debido a un mal funcionamiento del lector de tarjetas USB del que dispongo, se queda como bloqueado y lo tengo que desconectar y conectar para que vuelva a funcionar correctamente.

Cuando haya terminado el proceso, se habrán creado dos particiones en la tarjeta SD. Una muy pequeña formateada en FAT16, de unos 61MB que contiene los ficheros de arranque y otra más grande formateada en ext4 de unos 733MB que contiene lo que es la distribución en si o más técnicamente hablando, el sistema de ficheros raíz "/". Si tiene curiosidad puede comprobarlo con GParted:

Yo he utilizado una tarjeta SD de 2GB, aunque GParted nos muestra el tamaño real de 1.84GiB. Observamos que hay parte del espacio que no se ha utilizado(sin asignar). Podemos utilizar el propio GParted para redimensionar la partición 2 y aprovechar ese espacio o como veremos más adelante, lo haremos desde la propia Raspberry Pi.

Una vez que la tarjeta esta lista la podemos introducir en la Raspberry Pi e iniciar con ella. A diferencia de otras distribuciones, esta no muestra ningún asistente o proceso de configuración en su primera ejecución, directamente carga el sistema linux y muestra el indicador de "login" para que podamos iniciar sesión:

El usuario por defecto es "root" y la contraseña "raspberry".

 

3. Configurar la RED

Lo primero que nos interesa configurar va a ser la RED, luego explicaremos por qué. Por defecto MINIBIAN viene con un cliente DHCP lo que significa que si la encendemos con el cable de red conectado, obtendrá automáticamente una dirección IP y demás datos(siempre que haya un servidor DHCP en la RED, suele ser el mismo router de acceso a internet). Podemos comprobar la IP que ha obtenido con el comando "ifconfig eth0":

root@minibian:~# ifconfig eth0 
eth0 Link encap:Ethernet  HWaddr b8:27:eb:8b:f5:27
inet addr:192.168.1.201  Bcast:192.168.1.255  Mask:255.255.255.0
inet6 addr: fe80::ba27:ebff:fe8b:f527/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:396 errors:0 dropped:0 overruns:0 frame:0
TX packets:233 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:35681 (34.8 KiB)  TX bytes:30770 (30.0 KiB)
root@minibian:~#

En este caso ha obtenido la IP 192.168.1.201. También podemos ver cual es máscara de red, 255.255.255.0. La configuración por DHCP puede parecer muy práctica pero cuando se trata de acceder a equipos por su IP, es preferible que estos tengan configurada una IP de forma estática. Para configurar nuestra Raspberry Pi de forma estática editamos con "vi" el fichero "/etc/network/interfaces":

NOTA: Yo utilizo el editor "vi" por costumbre y reconozco que para quién no lo conozca le puede resultar "extraño". No voy a explicar nada sobre su uso, el problema en este caso es que MINIBIAN no trae otro editor alternativo. Si ha conseguido conectar la Raspberry Pi a Internet puede instalar el editor "nano" ejecutando:
      apt-get update
   apt-get install nano
No recomiendo que utilice "vi" sin saber sus comandos básicos, ya que este no muestra ninguna ayuda visual por pantalla y se puede encontrar que ni siquiera es capaz de salir del programa. Consulte antes los múltiples tutoriales que encontrará en Internet.

root@minibian:~# vi /etc/network/interfaces

Vemos que su contenido actual es este:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Lo dejamos de la siguiente manera, usted tendrá que adaptar las IPs a las correspondientes de su red:

auto lo
iface lo inet loopback

auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.71
netmask 255.255.255.0
gateway 192.168.1.1

Hemos anulado la línea del DHCP poniendo el "#" delante, puede eliminar la línea entera si lo desea, simplemente la dejamos de recordatorio o por si en algún momento queremos volver al DHCP.

En resumen lo que indica el fichero es que mi Raspberry Pi va a tener la IP 192.168.1.71, la máscara de red es la 255.255.255.0 y la puerta de enlace(gateway), que suele ser la IP del router es la 192.168.1.1.

Esta configuración bastaría para trabajar en la red local, pero si queremos además tener acceso a internet, hay que configurar los servidores DNS. Las IPs de los servidores DNS se escriben en el fichero "/etc/resolv.conf". Debe saber que puede utilizar cualquier servidor DNS conocido, lo habitual es poner los del proveedor de internet, algunos utilizan los de Google por que son fáciles de recordar, el "8.8.8.8" y "8.8.4.4". Yo voy a utilizar los servidores DNS de mi proveedor de Internet de manera que mi fichero "/etc/resolv.conf" queda de la siguiente manera:

domain Home
search Home
nameserver 87.216.1.66
nameserver 87.216.1.65

Para ser realistas, mi fichero ya contenía esta información sin haber tocado nada. ¿Cómo puede ser? Recordamos que encendí mi Raspberry Pi conectada a la red, ha sido el cliente DHCP el que se ha encargado de añadir esta información, pero ahora que hemos configurado la Raspberry Pi de forma estática, este fichero permanecerá inalterable. La línea "domain" y "search" también la puso el cliente DHCP, de momento son opcionales y las podemos eliminar si se desea, pero como no estorban las dejamos por si en algún futuro nos conviene personalizarlas. Como un ejemplo más si quisiera utilizar los servidores DNS de Google el fichero contendría:

nameserver 8.8.8.8
nameserver 8.8.4.4

No es necesario poner dos servidores DNS, con uno es suficiente pero suele ser normal poner un par de ellos por si falla el primero.

Ya hemos cambiado la configuración de red, pero para que los cambios surjan efecto hay que reiniciar el servicio de red "networking". Podemos ejecutar cualquiera de estos dos comandos "service networking restart" ó "/etc/init.d/networking restart", por ejemplo:

root@minibian:~# service networking restart
Warning: Unit file of networking.service changed on disk, 'systemctl daemon-reload' recommended.
root@minibian:~#

Vemos que aparece un "Warning" que recomienda ejecutar la orden "systemctl daemon-reload", así que hacemos caso y la ejecutamos. Si volvemos a reiniciar el servicio observamos que ya no aparece dicho "Warning".

Alternativamente y quizás lo mas recomendado para aplicar los cambios anteriores hubiera sido reiniciar la Raspberry Pi ejecutando la orden "reboot". Ahora bien ¿cómo puedo comprobar que la red ha quedado bien configurada? Ejecute la orden "ifconfig eth0" vista anteriormente y vea que la IP y máscara de red son correctas. Para comprobar que los servidores DNS están funcionando haga un "ping" a una dirección de internet conocida, por ejemplo a "www.google.com". Ejecute lo siguiente:

root@minibian:~# ping -c 4 www.google.com
PING www.google.com (64.233.166.147) 56(84) bytes of data.
64 bytes from wm-in-f147.1e100.net (64.233.166.147): icmp_seq=1 ttl=46 time=60.7 ms
64 bytes from wm-in-f147.1e100.net (64.233.166.147): icmp_seq=2 ttl=46 time=60.7 ms
64 bytes from wm-in-f147.1e100.net (64.233.166.147): icmp_seq=3 ttl=46 time=61.1 ms
64 bytes from wm-in-f147.1e100.net (64.233.166.147): icmp_seq=4 ttl=46 time=60.6 ms

--- www.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 60.642/60.822/61.152/0.262 ms
root@minibian:~#

Los tiempos de respuesta(time) pueden variar, pero el resto, debería ser prácticamente idéntico.

 

4. Cómo acceder por SSH

Al inicio del apartado anterior indicábamos que lo primero que nos interesaba configurar era la RED. Este interés radica en poder conectarnos cuanto antes por SSH, de esta manera el resto de configuraciones se pueden realizar remotamente desde otro equipo. Esto tiene la ventaja de que ya no necesitamos tener un teclado ni monitor conectado a la Raspberry Pi, es suficiente que esté conectada a la RED. Además como hemos visto, MINIBIAN no tiene interfaz gráfica, razón que puede justificar el utilizar un monitor, quizás más adelante nos interese instalar la interfaz gráfica, pero de momento vamos a intentar independizarnos del teclado y monitor.

Por su puesto si no está interesado en esta característica puede obviar estas instrucciones y continuar utilizando la consola local, es decir, el teclado y monitor conectado directamente.

Veamos por tanto con el siguiente ejemplo la forma de conectarnos por SSH a la Rapberry Pi:

$ ssh root@192.168.1.71
The authenticity of host '192.168.1.71 (192.168.1.71)' can't be established.
ECDSA key fingerprint is 50:21:93:8d:fa:a9:28:f0:27:06:5d:d6:9f:7f:f9:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.71' (ECDSA) to the list of known hosts.
root@192.168.1.71's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Nov 15 15:54:10 2015 from 192.168.1.11
-bash: warning: setlocale: LC_ALL: cannot change locale (es_ES.UTF-8)
root@minibian:~# _

Vemos que a la orden "ssh" se le pasa el usuario de acceso de la Raspberry Pi, "root", seguido de la arroba "@" y luego la dirección IP "192.168.1.71", todo esto sin dejar espacios. La primera vez que nos conectamos a un equipo nuevo por SSH, el sistema nos advierte que su clave no figura dentro de equipos conocidos, y pide confirmación para continuar, escribimos "yes" y pulsamos INTRO. SSH guarda la clave del equipo por lo que este mensaje ya no volverá a salir en las sucesivas conexiones. Luego pide la contraseña de acceso del usuario "root" de la Raspberry Pi, escribimos "raspberry" y pulsamos INTRO(por seguridad no se muestra ningún carácter al escribir la contraseña), se muestran unos mensajes de bienvenida y al final aparece la línea de comandos de la Raspberry Pi, "root@minibian:~#", lo que indica que ya estamos dentro tal y como si estuvieramos conectados en su consola local.

Para salir de la conexión SSH ejecutaremos la orden "exit" y comprobaremos como nuevamente regresamos al indicador de comandos de nuestro equipo:

root@minibian:~# exit
logout
Connection to 192.168.1.71 closed.
$ _

Pueden aparecen algunos mensajes de advertencia sobre "locale", esto es por que todavía no hemos configurado el idioma, algo que haremos a continuación.

 

6. Cambiar el idioma y la distribución de teclado

Cuando nos referimos a cambiar el idioma no estamos hablando ni mucho menos de que toda la interfaz se vaya a poner en español, tan sólo hay un mínimo de componentes que están traducidos, pero es necesario por lo menos para que el sistema tome correctamente los caracteres del teclado español.

Hay que instalar algún paquete por lo que es necesario que la Raspberry Pi tenga conexión a Internet. Primero actualizamos la base de datos de los paquetes disponibles:

apt-get update

A continuación instalamos el paquete "console-data":

apt-get install console-data

Durante la instalación aparecerá una ventana en la que tenemos que seleccionar:

 Select keymap from full list 

y luego:

 pc / querty /Spanish / Standard / Standard 

Ahora reconfiguramos lo que se conoce como las variables "locales":

dpkg-reconfigure locales

Aparecerá una ventana con una lista enorme donde tenemos que desmarcar "en_GB.UTF-8 UTF-8" y marcar "es_ES.UTF-8 UTF-8" y luego en la siguiente ventana seleccionar "es_ES.UTF-8".

Editar el fichero "/etc/default/locale" y dejarlo con así:

LANG=es_ES.UTF-8
LC_ALL=es_ES.UTF-8
LANGUAGE=es_ES.UTF-8

Finalmente para seleccionar la zona horaria ejecutar:

dpkg-reconfigure tzdata

Aparecerá una ventana en la que primero hay que elegir "Europa" y luego "Madrid".

Reiniciamos el sistema para que tome los cambios y podemos comprobar por ejemplo que el teclado ya reconoce la ñ.

 

5. Cambiar el nombre del sistema

El nombre del sistema por defecto es "minibian", se puede ver que aparece en el indicador de la línea de comandos, pero también lo podemos obtener con el comando "hostname":

root@minibian:~# hostname
minibian
root@minibian:~# _

Para cambiar el nombre del sistema hay que editar los dos ficheros siguientes:

/etc/hostname

/etc/hosts

En algunos sistemas basta cambiarlo en "/etc/hostname" y al reiniciar se cambia automáticamente en "/etc/hosts" pero este no es el caso. Primero editamos "/etc/hostname" el cual sólo contiene el nombre actual. Para el nuevo nombre recomendamos utilizar sólo los caracteres a..z(en minúsculas y sin la ñ), los números 0..9 y el guión normal "-".

El fichero "/etc/hosts" se utiliza para la resolución local del nombres a IPs, vemos que tiene dos líneas relacionadas con las IPs que se denominan de "bucle local", simplemente cambiamos el nombre de "minibian" por el mismo que hayamos puesto en el fichero "hostname":

127.0.0.1       localhost
127.0.1.1 minibian

Una vez editados los dos ficheros reiniciamos para que tome los cambios.

 

7. Redimensionar la partición 2 para ocupar toda la SD

El fichero "2015-11-12-jessie-minibian.img" que descomprimimos en la tarjeta creó dos particiones en ella. Hay que redimensionar la segunda partición. Se puede hacer desde algún otro linux con GParted o desde la Rasberry Pi iniciando con la propia tarjeta SD que se ha generado.

A continuación se explica como hacerlo desde la propia tarjeta SD con la RaspBerry Pi.

Iniciar la RaspBerry Pi con la targeta SD con el MINIBIAN, iniciar sesión y ejecutar:

root@minibian:~# fdisk /dev/mmcblk0

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help):

Estamos dentro del editor de particiones "fdisk". Todos los cambios que vamos a realizar no se guardan hasta que pulsemos la tecla "w" por lo que si nos equivocamos o tenemos alguna duda podemos pulsar la tecla "q" para salir de "fdisk" sin realizar ningún cambio.

Pulsamos la letra "p"(aceptar con INTRO). Se mostrará el listado de particiones de la tarjeta:

Command (m for help): p
Disk /dev/mmcblk0: 1,9 GiB, 1977614336 bytes, 3862528 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device         Boot  Start     End Sectors  Size Id Type
/dev/mmcblk0p1          16  125055  125040 61,1M  b W95 FAT32
/dev/mmcblk0p2      125056 1626112 1501057  733M 83 Linux

Tenemos que anotar el número que aparece en la columna "Start" de la segunda partición, es el sector de inicio de dicha partición. Ahora vamos a eliminar la segunda partición, pero tranquilos, estamos eliminado sólo la información de lo que ocupa la partición, su contenido, lo que es el sistema de ficheros permanece inalterable.

Para eliminar la segunda partición pulsamos la tecla "d" y luego "2":

Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Ahora vamos a crear una nueva partición que ocupará todo el espacio libre que ha quedado en la tarjeta SD, para ello pulsamos la secuencia "n", "p", "2"(aceptando con INTRO en cada una), preguntará por el primer sector(First sector), es ahora cuando tenemos que introducir el valor que hemos anotado antes. Luego preguntará por el último sector(Last sector), aquí no escribimos nada, basta con pulsar INTRO para seleccionar el valor que nos ofrece(default 3862527) que corresponde con el último sector del espacio libre:

Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (125056-3862527, default 126976): 125056
Last sector, +sectors or +size{K,M,G,T,P} (125056-3862527, default 3862527):

Created a new partition 2 of type 'Linux' and of size 1,8 GiB.


Finalmente para guardar los cambios y salir de "fdisk" pulsamos "w":

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Dispositivo o recurso ocupado

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

root@minibian:~# _

Ahora tenemos que reiniciar("reboot" ó "shutdown -r now") para que el sistema cargue el nuevo tamaño de la partición.

Con "fdisk" hemos conseguido aumentar la información de la tabla de particiones a 1.8GB, pero el sistema de ficheros inicial sigue ocupando poco más de 700MB. Podemos comprobarlo con el comando "df -h /":

root@minibian:~# df -h /
S.ficheros     Tamaño Usados  Disp Uso% Montado en
/dev/root        705M   441M  214M  68% /
root@minibian:~# _

Para redimensionar el sistema de ficheros y que se adapte al nuevo tamaño de la partición hay que ejecutar el siguiente comando:

root@minibian:~# resize2fs /dev/mmcblk0p2
resize2fs 1.42.12 (29-Aug-2014)
El sistema de ficheros de /dev/mmcblk0p2 está montado en /; hace falta cambiar el tamaño en línea
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p2 is now 467184 (4k) blocks long.

root@minibian:~# _

Si comprobamos nuevamente el tamaño vemos que ahora ya muestra el tamaño esperado:

root@minibian:~# df -h /
S.ficheros     Tamaño Usados  Disp Uso% Montado en
/dev/root        1,8G   441M  1,3G  27% /
root@minibian:~# _

 

8. Desactivar root y utilizar sudo

En este apartado vamos a dar algo de seguridad a nuestra Raspberry Pi, para ello vamos a instalar el paquete "sudo" el cual puede controlar el acceso a operaciones que necesiten privilegios de administrador o como "root". Para ello crearemos un nuevo usuario al que llamaremos como queramos, por ejemplo "piadm", al cual le daremos los privilegios administrativos y desactivaremos el usuario "root".

Empezamos instalando el paquete "sudo":

root@minibian:~# apt-get install sudo
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
sudo
0 actualizados, 1 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 829 kB de archivos.
Se utilizarán 2.345 kB de espacio de disco adicional después de esta operación.
Des:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main sudo armhf 1.8.10p3-1+deb8u2 [829 kB]
Descargados 829 kB en 2s (377 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Seleccionando el paquete sudo previamente no seleccionado.
(Leyendo la base de datos ... 14310 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../sudo_1.8.10p3-1+deb8u2_armhf.deb ...
Desempaquetando sudo (1.8.10p3-1+deb8u2) ...
Procesando disparadores para systemd (215-17+deb8u2) ...
Procesando disparadores para man-db (2.7.0.2-5) ...
Configurando sudo (1.8.10p3-1+deb8u2) ...
Procesando disparadores para systemd (215-17+deb8u2) ...
root@minibian:~# _

Creamos el nuevo usuario:


root@minibian:~# adduser piadm
Adding user 'piadm' ...
Adding new group 'piadm' (1000) ...
Adding new user 'piadm' (1000) with group 'piadm' ...
Creating home directory '/home/piadm' ...
Copying files from '/etc/skel' ...
Introduzca la nueva contraseña de UNIX:
Vuelva a escribir la nueva contraseña de UNIX:
passwd: contraseña actualizada correctamente
Cambiando la información de usuario para piadm
Introduzca el nuevo valor, o pulse INTRO para usar el valor predeterminado
        Nombre completo []:
        Número de habitación []:
        Teléfono del trabajo []:
        Teléfono de casa []:
        Otro []:
Is the information correct? [Y/n] Y
root@minibian:~# _

Ahora, configuraremos "sudo" para que permita tomar privilegios de "root" a nuestro nuevo usuario, para ello crearemos el fichero "/etc/sudoers.d/usuarios"(el nombre del fichero puede ser cualquier otro que "usuarios") con la siguiente línea:

piadm ALL=(ALL:ALL) ALL

Podemos hacer esto fácilmente ejecutando:

root@minibian:~# echo 'piadm ALL=(ALL:ALL) ALL' > /etc/sudoers.d/usuarios
root@minibian:~# _

...y comprobar el resultado:

root@minibian:~# cat /etc/sudoers.d/usuarios
piadm ALL=(ALL:ALL) ALL
root@minibian:~# _

Por seguridad hay que cambiar los permisos al fichero para que sólo pueda ser leído por "root":

root@minibian:~# chmod 440 /etc/sudoers.d/usuarios
root@minibian:~# _

Tan sólo queda desactivar el usuario "root", pero antes vamos a reiniciar el sistema("reboot") para comprobar que accedemos con el nuevo usuario y lo más importante, podemos tomar privilegios de "root", de lo contrario nos habremos bloqueado a nosotros mismos sin poder entrar como "root".

Para acceder con el nuevo usuario por SSH utilizamos:

$ ssh piadm@192.168.1.71
piadm@192.168.1.71's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
piadm@minibian:~$ _

Notamos la diferencia en el indicador de la línea de comandos, empieza con nuestro usuario y lo más importante, ahora termina con el símbolo "$" lo que significa que no tenemos privilegios de "root". Para tomar privilegios de "root" ejecutamos:

piadm@minibian:~$ sudo su

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for piadm:
root@minibian:/home/piadm# _

La primera vez que ejecutamos el comando muestra un mensaje de información con tres advertencias, la última por cierto bastante graciosa. En cualquier caso se resume como que ahora tenemos el control de todo el sistema y tenemos que tener cuidado en lo que hacemos. Este mensajea no saldrá más.

Como todo está correcto ya podemos desactivar el usuario "root". Realmente lo que se hace con la siguiente orden es bloquear su contraseña, con eso conseguimos el resultado deseado y nadie podrá iniciar una sesión directamente con él:

root@minibian:/home/piadm# passwd -l root
passwd: información de caducidad de la contraseña cambiada.
root@minibian:/home/piadm#

Si cerramos la sesión e intentamos iniciar con "root" comprobaremos que ya no podemos. Nuestro sistema es ahora un poco más seguro. Es conveniente no trabajar siempre como "root", en cuanto terminemos la tarea que necesitaba privilegios de "root" debemos volver a nuestra sesión de usuario con "exit":

root@minibian:/home/piadm# exit
exit
piadm@minibian:~$

En vez de acceder como "root" durante un tiempo indeterminado, también podemos ejecutar ordenes de una en una con la orden "sudo"(como veremos en el siguiente apartado). Para comodidad del usuario, mientras no salgamos de la sesión, la orden "sudo" recuerda durante cinco minutos la contraseña introducida, de esta manera no preguntará por ella en la sucesivas ordenes "sudo" que se introduzcan hasta que pase este tiempo.

9. Generar nuevas claves SSH

Es conveniente cambiar las claves del servicio SSH para que no sean las que vienen con la imagen ya que todo el mundo tiene acceso a ellas. Basta con ejecutar los siguientes dos órdenes, la primera simplemente borra las claves actuales y la segunda genera unas nuevas:

piadm@minibian:~$ sudo rm /etc/ssh/ssh_host_*
[sudo] password for piadm:
piadm@minibian:~$ sudo dpkg-reconfigure openssh-server
Creating SSH2 RSA key; this may take some time ...
2048 54:bf:17:e8:53:4a:e9:ec:48:0b:16:dd:99:a4:e0:75 /etc/ssh/ssh_host_rsa_key.pub (RSA)
Creating SSH2 DSA key; this may take some time ...
1024 e5:f5:10:12:6c:67:68:b7:f7:1f:dc:f4:d6:ac:5d:8b /etc/ssh/ssh_host_dsa_key.pub (DSA)
Creating SSH2 ECDSA key; this may take some time ...
256 1b:92:09:65:2a:bd:52:7a:a3:99:05:f7:e2:17:a4:e4 /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
Creating SSH2 ED25519 key; this may take some time ...
256 3c:20:de:19:b7:4b:95:e8:93:e6:a8:dd:8c:dc:b4:a3 /etc/ssh/ssh_host_ed25519_key.pub (ED25519)
piadm@minibian:~$ _

Si ahora cerramos la sesión y volvemos a iniciar por SSH vemos que no se puede, aparece el siguiente mensaje:

$ ssh piadm@192.168.1.71
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
1b:92:09:65:2a:bd:52:7a:a3:99:05:f7:e2:17:a4:e4.
Please contact your system administrator.
Add correct host key in /home/madrid/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/madrid/.ssh/known_hosts:1
  remove with: ssh-keygen -f "/home/madrid/.ssh/known_hosts" -R 192.168.1.71
ECDSA host key for 192.168.1.71 has changed and you have requested strict checking.
Host key verification failed.
madrid@pc-01:~$

Esto nos confirma que se generaron nuevas claves. El mensaje advierte que la clave de la Raspberry Pi no coincide con la que hay guardada. Para poder acceder tenemos que eliminar la clave antigua con la orden que indica. Entonces luego ya nos deja entrar por SSH, vuelve a salir la pregunta para confirmar la conexión y la nueva clave se guarda de manera que ya no pregunta en las sucesivas conexiones:

$ sudo ssh-keygen -f "/home/madrid/.ssh/known_hosts" -R 192.168.1.71
[sudo] password for madrid:
/home/madrid/.ssh/known_hosts updated.
Original contents retained as /home/madrid/.ssh/known_hosts.old
$ ssh piadm@192.168.1.71
The authenticity of host '192.168.1.71 (192.168.1.71)' can't be established.
ECDSA key fingerprint is 1b:92:09:65:2a:bd:52:7a:a3:99:05:f7:e2:17:a4:e4.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/madrid/.ssh/known_hosts).
piadm@192.168.1.71's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Nov 22 18:31:48 2015 from 192.168.1.11
piadm@minibian:~$ _