Spiga

Actualizar firmware, IP estática, acceso SSH + SFTP en Raspberry Pi


Como ya sabéis ésta es la segunda entrega de una serie de tutoriales que vamos a dedicar a la Raspberry Pi. Si has llegado directamente aquí, te recomiendo leer antes mi anterior tutorial: Raspberry Pi para novatos.

Para los que nos quedamos tras la primera configuración y ejecución del sistema base Raspbian os habréis dado cuenta que, tras varios inicios de vuestra máquina, la IP ha ido variando. Esto se debe a que, por defecto, Raspbian utiliza DHCP para asignar una IP a nuestra Raspberry, hecho nada recomendable si lo que pretendemos es montar algún tipo de servidor en ella, ya que dificultaría la localización de la misma en la red cada vez que se nos asignase una nueva IP. Existen dos posibles soluciones al problema:

  1. Seguir con DHCP, despreocupándonos de la configuración manual de los parámetros de red y configurar en nuestro router una asignación estática de IP, mediante DHCP, gracias a la dirección MAC de la ethernet de la Raspberry (supongo que a más de uno le habrá sonado a Chino).
  2. Editar los ficheros de configuración de red de Raspbian para que se le asigne la IP que nos interese a nosotros. No cabe decir que éste es el método que yo voy a utilizar y el que recomiendo.
Tal y como he dicho no voy a entrar en configuraciones de routers, ya que para cada modelo, fabricante, etc. es un proceso totalmente diferente y nos perderíamos. Siguiendo por lo tanto la segunda opción vamos a configurar nuestra IP para que sea estática, por lo tanto enciende tu Raspberry, haz login y prepárate.

Para empezar vamos a necesitar algunos valores, como la IP deseada, máscara de red, puerta de enlace y servidores DNS. De no conocer dichos valores escribiremos:

ifconfig

Una vez que tengamos todos los valores anotados editaremos el fichero de configuración con:
sudo nano /etc/network/interfaces

Allí deberíamos encontrarnos con el siguiente texto:


iface eth0 inet dhcp

Que básicamente lo que hace es asignarme a la interfaz eth0 una IP a través de DHCP. De tener más de una NIC irían sumando números, como por ejemplo eth1, eth2, etc. Para conseguir nuestro propósito lo que haremos será cambiar la línea por:

iface eth0 inet static
address 192.168.1.123
netmask 255.255.255.0
gateway 192.168.1.1

Debes tener en cuenta que en address vamos a poner la IP deseada para nuestra Raspberry, en mi caso 192.168.1.123 (fácil de recordar), en netmask la máscara de red y en gateway la puerta de enlace.

Ahora pasaremos a configurar los servidores DNS, para ello escribiremos:


sudo nano /etc/resolv.conf

Y borraremos lo que haya para agregar lo siguiente:

nameserver 192.168.1.1
nameserver 8.8.8.8

Con ambas líneas agregamos a la puerta de enlace como DNS primario, ya que muchos routers actúan como tal si están correctamente configurados, y con la segunda hemos agregado el servidor DNS de Google. Ambos valores pueden ser cambiados por los servidores DNS que más os gusten, ya sean los de vuestra compañía o cualquier otro (no hay problema en usar DNS que no son de nuestro propio ISP)

Ahora que ya tenemos una IP fija lista es momento de reiniciar para tomar nuevos valores. Para ello escribiremos el siguiente comando:

sudo reboot

Pasados unos segundos tendremos nuestra pequeña con su IP estática, lo que nos va a permitir tenerla bien localizada en la red en todo momento. El siguiente paso va a ser probar una conexión remota desde la propia red. Para ello encenderemos otra máquina que tengamos y accederemos mediante un cliente SSH. Tenemos dos soluciones:

Solución de acceso remoto con Windows:
Empezaremos descargando un cliente SSH, como por ejemplo PuTTy que es totalmente gratuito. Como pros son su reducido tamaño y portabilidad, puesto que no necesita instalarse y actúa como un portable. Una vez lo tengamos descargado, lo ejecutamos y le damos los valores necesarios:

PuTTy es un cliente SSH gratuito y completo para Windows

Le pinchamos a "Open" y si todo es correcto nos encontraremos con una pantalla que nos pide nuestro login y, de forma posterior, nuestra contraseña. Una vez identificado correctamente estarás dentro de la máquina pudiendo hacer lo mismo que si estuvieras delante. Para Linux es aún más sencillo, teniendo simplemente que escribir en una terminal lo siguiente:

ssh pi@192.168.1.123

O si queremos que nos importe la sesión gráfica (no os lo recomiendo, ya que si os acordáis redujimos a 32 MiB la capacidad de la GPU):


ssh -X pi@192.168.1.123

Y ahora ya podemos controlar totalmente nuestra máquina, sin necesidad de tenerla conectada a una salida de vídeo, dando servicio 24h/365 días al año, por un consumo de unos 6€ aproximados de luz. Genial, ¿verdad? Pues sigamos dándole más funcionalidades.
Ahora vamos a pasar a realizar una conexión por SFTP. Esto nos va a permitir transferir ficheros de un host determinado a nuestro "Raspberry Server". Siguiendo en la línea del software gratuito usaremos FileZilla. En Windows podéis descargarlo de aquí y para los usuarios de Linux bastará con instalarlo desde repositorios mediante:
sudo apt-get install filezilla

Arrancamos el programa y lo configuramos de la siguiente manera:

SFTP es un protocolo que transfiere ficheros en conexiones fiables

Es importante que cambiéis el puerto al 22, porque de lo contrario va a intentar conectar al puerto FTP, mientras que nosotros estamos sirviendo SFTP. Al conectar deberemos ver el contenido de la Rasp a la derecha y, al lado izquierdo, nuestro host.

FileZilla es un cliente FTP y SFTP con licencia GNU/GPL. Es multiplataforma.

Llegados a este punto ya podemos controlar remotamente, pasar ficheros y lo único que nos queda es poner al día nuestro firmware. Para ello vamos a utilizar la herramienta rpi-update de Hexxeh. Para poder utilizar vamos a necesitar hacer un par de cosas antes, así que empezaremos instalando la utilidad git, que nos permitirá utilizar el updater. Para ello escribiremos en nuestra raspberry los siguientes comandos:

sudo apt-get install git
sudo apt-get install ca-certificates
sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update
sudo chmod +x /usr/bin/rpi-update

Momento de actualizar nuestros firmwares, con la pequeña diferencia que aquí no hay riesgo alguno de quedarnos con un ladrillo, ya que todo es mediante software. Para ello escribiremos en la Raspberry:

sudo rpi-update 224

Consiguiendo así actualizar en apenas unos minutos y haciendo, a su vez, la repartición de memoria en 224 MB para CPU y 32 para GPU como ya habíamos hecho antes.

Tras actualizar el firmware deberemos reiniciar para que surja efecto

Al finalizar se nos mostrará un mensaje advirtiéndonos que es necesario reiniciar para activar el nuevo firmware, así que procederemos a ello con la instrucción que vimos tras guardar los ficheros de configuración de IP estática.

Y con esto hemos acabado con el segundo tutorial de configuración básica para novatos. En el próximo personalizaremos los mensajes de bienvenida de nuestra Raspberry e instalaremos un cliente DLNA (streaming UPnP) para que sirva todo el contenido multimedia de nuestros discos o SD al resto de dispositivos compatibles en la red. Si hasta entonces quieres seguirme con mayor regularidad puedes hacerlo en mi Twitter (@drkbcn) en el que publico, entre otras cosas, noticias y proyectos interesantes relacionados con la Raspberry Pi.

¡Hasta entonces! 

PD: Gracias a la gente de Farnell España / element14 por difundir, a través de su Twitter, mis tutoriales.


11 comentarios:

  Unknown

31 de julio de 2012, 20:07

Un apunte sobre el tema del dhcp. A pesar de "fijar" la ip, en mi caso también tuve que desinstalar el paquete isc-dhcp-client porque teniá pollos con la red (no acababa de subir el interfaz con la ip fija).

Valga decir, por eso, que yo uso la imagen de Raspbian DarkBasicImage (llamémosle la netinstall de Raspbian, para entendernos), que es la que yo recomendaría para una instalación servidor y que puede encontrarse aquí.

Keep up the good work!

  Alejandro Diaz

2 de agosto de 2012, 21:50

cuando hago

sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update

me sale
wget: /urs/bin/rpi-update: No such file or directory

tengo que crear antes la carpeta?

  Alejandro Diaz

3 de agosto de 2012, 16:00

Solucionado, lo estaba haciendo desde ssh.....ups

  pintafontes

16 de agosto de 2012, 22:06

Todo bien, hasta que he actualizado el firmware. Al reiniciar el sistema no da señales de vida y yo empiezo a preocuparme. Es imposible arrancarlo, aunque al rescribir la SD con el sistema limpio todo vuelve a su cauce.
En mi intento por solucionar el problema me he encontrado con una carpeta boot vacía y una boot.bak que he recuperado sin que haya servido de nada. También he mirado en la página web del autor del programa pero no había información alguna que me sirviese.

  Radioelf

22 de octubre de 2012, 19:34

Todo bien, hasta que he actualizado el firmware.

  F.J. Martínez Perea

8 de junio de 2013, 12:54

Aunque remotamente puedo conectarme por ssh a la raspberry pi usando putty, desde windows 7, cuando intento hacerlo con FileZilla me da el error "ssh_init: Host does not exist"
¿Se trata de un problema de configuración de Raspbian o de FileZilla?

  F.J. Martínez Perea

8 de junio de 2013, 13:14

Parece que el problema está en FileZilla, aunque no sé cuál es y me gustaría que alguien me informase.
Usando Winscp no he tenido ningún problema.
¡Gracias por tus estupendos tutoriales!

  DaRKnSiS

13 de junio de 2013, 17:18

FJ, para conectar con FileZilla debes cambiar el puerto de conexión al 22, porque de lo contrario usa el de FTP ;)

  F.J. Martínez Perea

13 de junio de 2013, 19:16

Estoy intentando configurar un acceso remoto al entorno gráfico LXDE de Raspberry a través de Internet. He visto por ahí como hacerlo usando Xming, por ssh, pero no lo logro. Quizás sea porque tengo redireccionada la conexión ssh de mi Raspberry a otro puerto, el 9999, que también tengo abierto en mi router.
Puedo conectar perfectamente usando putty, pero no usando Xming, porque parece que intenta hacerlo por el puerto 22. ¿Cómo configrarlo?

  DaRKnSiS

17 de junio de 2013, 16:54

F.J. lo único que se me ocurre es que no tenga en /etc/ssh/sshd_config el X11 forwarding activado.

Edita el fichero y asegúrate que tienes la línea:

# X11 tunneling options
X11Forwarding yes

  Iraklis

16 de noviembre de 2013, 13:11

Cuando intento conectar Via ssh pi@ me sale "connection refused". El puerto 22 esta escuchando. Hago ping correctamente, pero no hay manera de conectar.