Una de las maneras mas faciles de administrar un Sistema Operativo de la Familia GNU/Linux es por medio de la CLI, pero si lo que queremos es administrar nuestro equipo por la CLI sin estar frente a el, la mejor manera de hacerlo es configurando un servidor SSH "Secure SHell".

Idea: Pretendemos montar un entorno de desarrollo basado en Ubuntu 16.04 para correr las tecnologias de PX4, queremos administrar el sitema Remotamente utilizando un protocolo de red llamado SSH.

para ello sobre el host donde compilaremos el Firmware del proyecto PX4, instalaremos un servidor para acceso via SSH llamado OpenSSH.

Herramientas

  • Host de Desarrollo con Ubuntu 16.04
  • Host de Desarrollo con Debian Buster
  • Conexion en Red LAN entre los dos dispositivos con salida a internet.

Instalando el servidor SSH

Sobre el host con Ubuntu 16.04, vamos a instalar el servidor SSH; para ello accedemos a su instalacion de la siguiente manera

$ sudo apt-get update && sudo apt-get install openssh-server

Procedemos a validar el estado del servidor SSH

$ sudo systemctl status sshd.service 

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since sáb 2018-07-14 14:22:53 -05; 5min ago
 Main PID: 13875 (sshd)
   CGroup: /system.slice/ssh.service
           └─13875 /usr/sbin/sshd -D

jul 14 14:22:53 Ubpx4Dev systemd[1]: Starting OpenBSD Secure Shell server...
jul 14 14:22:53 Ubpx4Dev sshd[13875]: Server listening on 0.0.0.0 port 22.
jul 14 14:22:53 Ubpx4Dev sshd[13875]: Server listening on :: port 22.
jul 14 14:22:53 Ubpx4Dev systemd[1]: Started OpenBSD Secure Shell server.

Como podemos observar, el servidor esta a la escucha sobre la interfaz de red en el puerto 22, podemos comprobar localmente que el puerto es alcanzable

$ nc -vz 127.0.0.1 22

Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!

Intentamos realizar una prueba de conexion SSH de manera local

$ ssh heberth@127.0.0.1

The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:gvRxhewUn4AfqLSkvfztozjOoYZHWrJncdYIYdD9MYA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
heberth@127.0.0.1's password: 
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-45-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 packages can be updated.
0 updates are security updates.

*** System restart required ***

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

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

Con esto comprobamos el acceso al servidor ssh de manera local, ahora procedemos a validar la IP del server y posteriormente su conexion via TCP/IP

$ sudo ifconfig 

enp1s0    Link encap:Ethernet  HWaddr 00:e0:4c:a1:00:4a  
          inet addr:192.168.2.102  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::ebe1:2079:9019:8571/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:147431 errors:0 dropped:0 overruns:0 frame:0
          TX packets:108765 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:212175922 (212.1 MB)  TX bytes:7816153 (7.8 MB)

La ip actual para el servidor es 192.168.2.102, con esto es suficiente para saltar a la configuracion del usuario desde el host que administraremos el servidor

Accediendo al Host Remotamente.

Desde nuestro equipo Debian conectado a la red local, vamos a intentar alcanzar esta direccion IP y a su servicio SSH recien instalado.

$ nc -vz 192.168.2.102 22

Ubpx4Dev [192.168.2.102] 22 (ssh) open

En este punto alcanzamos la direccion ip y comprobamos que sobre el puerto 22 se encuentra instalado el servicio SSH.

Copiando el id para acceder sin poner siempre la contraseña.

Para acceder de manera directa sin siempre tener que poner nuestras credenciales es copiar la llave de conexion nuestra sobre el server y permitir conexiones a este, esto es posible realizarlo con la siguiente instuccion.

$ ssh-copy-id heberth@192.168.2.102

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/heberth/.ssh/id_rsa.pub"
The authenticity of host '192.168.2.102 (192.168.2.102)' can't be established.
ECDSA key fingerprint is SHA256:gvRxhewUn4AfqLSkvfztozjOoYZHWrJncdYIYdD9MYA.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
heberth@192.168.2.102's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'heberth@192.168.2.102'"
and check to make sure that only the key(s) you wanted were added.

Aqui, nos solicitara por Univa vez las credenciales del usuario.

y como nos indican las instrucciones del comando anterioro, ahora podremos conectarnos de manera remota sin necesidad de autenticarnos siempre con las credenciales.

$ ssh heberth@192.168.2.102

Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-45-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 packages can be updated.
0 updates are security updates.

*** System restart required ***
Last login: Sat Jul 14 14:43:06 2018 from 192.168.2.103