❏Conectar en remoto con el RPi y ejecutar comandos.
❏Transferir archivos desde y hacia el RPi usando el protocolo SFTP (SSH File Transfer Protocol, protocolo de transferencia de archivos SSH).
❏Redireccionar conexiones X11, lo que permite la computación en redes virtuales.
De forma predeterminada, las distribuciones Linux para RPi ejecutan un servidor SSH (sshd en Debian) vinculado al puerto 22. Contar con un servidor SSH disponible como medio predeterminado para iniciar sesión remota en el RPi tiene ciertas ventajas.
En particular, nos permite abrir el puerto 22 del RPi a Internet mediante la funcionalidad de redirección de puertos (port forwarding) de nuestro router. Por favor, asegúrese de modificar la contraseña predeterminada para la cuenta de usuario "pi" antes de hacerlo. Después podremos iniciar sesión en nuestro RPi de forma remota desde cualquier lugar del mundo, siempre que conozcamos su dirección IP. El servicio de DNS dinámico (Dynamic DNS, DDNS o DynDNS), permite a la los routers que lo ofrecen (la mayoría) registrar su dirección IP más reciente en un servicio en línea. Acto seguido, dicho servicio en línea hace corresponder un nombre de dominio de nuestra elección con la última dirección IP que nuestro proveedor de acceso nos haya asignado, es decir, los mapea. El servicio de DNS dinámico suele tener un coste anual, a cambio del que obtendremos una dirección con la forma dereksRPi.servicename.com.
Conexiones SSH (Secure Shell) mediante PuTTY
Anteriormente mencionamos PuTTY como un método para conectar con el RPi a través de una conexión serie. PuTTY es una pequeña aplicación, gratuita y de código abierto, emuladora de terminal, consola serie y cliente SSH, que podemos emplear para conectar con el RPi a través de una red local. PuTTY posee varias características útiles:
❏Admite conexiones serie y SSH.
❏Instala una aplicación llamada psftp que permite transferir archivos hacia y desde el RPi por la red desde nuestro ordenador.
❏Acepta el redireccionamiento SSH X11 (exigido en el capítulo 14).
La figura 2-4 muestra los ajustes de configuración de PuTTY. Seleccione SSH como tipo de conexión, introduzca la dirección IP de su RPi (o el nombre de Zeroconf), acepte el puerto 22 (predeterminado) y guarde la sesión con un nombre significativo. Haga clic en "Open" ("Abrir") e inicie sesión con su nombre de usuario y contraseña. Si observa una alerta de seguridad que le advierte de posibles "ataques de intermediario" (man-in-the-middle attacks), que pueden resultar preocupantes en redes inseguras, acepte la huella de clave (fingerprint) ofrecida y continúe. Los usuarios de Mac OS X pueden abrir la aplicación Terminal con una configuración similar (por ejemplo, ssh -XC pi@192.168.1.116 o ssh -XC pi@raspberrypi.local).
Figura 2-4: Ajustes de configuración SSH de PuTTY sobre una ventana de conexión de terminal SSH.
Más adelante en este mismo capítulo veremos los comandos básicos que se pueden enviar al RPi, pero antes es necesario examinar cómo podemos transferir archivos desde y hacia el RPi.
Chrome Apps: cliente Secure Shell
El navegador web Chrome de Google permite la instalación de Chrome Apps. Se trata de aplicaciones que operan igual que las instaladas en el propio ordenador (nativas), pero escritas en HTML5, JavaScript y CSS. Muchas de estas aplicaciones utilizan el cliente nativo Google Native Client (NaCl), que no es otra cosa que una tecnología de aislamiento de procesos, sandbox para abreviar, que permite ejecutar aplicaciones compiladas C/C++ directamente en el navegador, con independencia del sistema operativo (SO) subyacente. La ventaja de NaCl es que posibilita que las aplicaciones alcancen niveles de rendimiento casi iguales a las nativas del SO, puesto que pueden contener código fuente capaz de utilizar instrucciones de bajo nivel.
Existe una aplicación Chrome App capaz de emular un terminal SSH que resulta extremadamente útil. Para instalarla en Chrome, abra una nueva pestaña y haga clic en el icono "Apps". Si en su versión de Chrome no aparece el acceso a Chrome Web Store, escriba "chrome web store" en la barra de direcciones y pulse Intro. En el campo de búsqueda de dicha página, escriba "Secure Shell". Localice la App e instálela. Acabado el proceso, la App Secure Shell aparecerá junto con las demás aplicaciones para Chrome. Si no puede acceder a ellas por su versión o configuración de Chrome, escriba "chrome://apps" en la barra de direcciones y podrá acceder a sus iconos. Cuando inicie la App Secure Shell deberá configurar los ajustes de conexión como en la figura 2-4 y la aplicación se ejecutará en una pestaña como en la figura 2-5.
Figura 2-5: La App Secure Shell para Chrome.
Como transferir archivos mediante PuTTY/psftp sobre SSH
La instalación de PuTTY incluye también compatibilidad con el protocolo FTP (File Transfer Protocol) de transferencia de archivos. Este nos permite transferir archivos hacia y desde el RPi utilizando nuestra conexión de red. Puede iniciar la aplicación PuTTY Secure File Transfer Protocol escribiendo psftp en el intérprete de comandos de Windows. No olvide que para que esto funcione debe incluir el directorio del ejecutable putty.exe en la variable de entorno PATH de su sistema.
En el prompt psftp> , escriba open pi@raspberrypi.local (o la dirección IP) para conectar con el RPi. Nuestro ordenador se identifica ahora como máquina local, local machine, y el RPi, como máquina remota (remote machine). Cuando emita un comando, normalmente lo hará en la máquina remota. Después de conectar, nos encontraremos en la carpeta de usuario (o directorio home directory) de la cuenta que hayamos utilizado. Por lo tanto, bajo la distribución RPi Raspbian, si nos conectamos como "pi", estaremos en el directorio /home/pi/.
Para transferir un solo archivo c:\temp\test.txt desde el ordenador local hasta el RPi, seguiremos los pasos que se detallan a continuación:
psftp: no hostname specified; use "open host.name" to connect
psftp> open pi@erpi.local
Using username "pi".
pi@erpi.local's password: raspberry
Remote working directory is /home/pi
psftp> lcd c:\temp
New local directory is c:\temp
psftp> mkdir test
mkdir /home/pi/test: OK
psftp> cd test
Remote directory is now /home/pi/test
psftp> put test.txt
local:test.txt => remote:/home/pi/test/test.txt
psftp> dir test.*
Listing directory /home/pi/test
-rw-r--r-- 1 pi pi 8 Dec 18 16:45 test.txt
psftp>
Los comandos que contienen el prefijo l se dirigen a la máquina local, por ejemplo lcd (local change directory) para cambiar el directorio local o lpwd (local print working directory) para el directorio de impresión local. Para transferir un solo archivo desde la máquina local a la máquina remota, empleamos el comando put. Para realizar la operación inversa, traer un archivo de la máquina remota a la máquina local, usamos get. Para enviar o traer múltiples archivos están los comandos mput y mget. Si nos olvidamos de un comando, escribimos help para obtener ayuda.
Si utilizamos una máquina cliente con Linux, podemos emplear el comando sftp en lugar de psftp. Casi todo lo demás queda igual. La aplicación cliente sftp también está instalada en la distribución del RPi de manera predeterminada, así que podrá invertir el orden de las comunicaciones, es decir: podremos hacer que el RPi actúe como servidor y otra máquina como cliente.
Читать дальше