SSH

Flag Descripción
-t Permite ejecutar sudo cuando se envía un comando

Tanto SFTP como SSH utilizan el puerto 22, que se puede especificar con -p 22. También se puede especificar un puerto concreto.

Para activar o desactivar la capacidad de introducirse en otro ordenador usando SSH hay que utilizar systemctl con enable o disable:

sudo systemctl enable ssh

Para hacer tu ordenador accesible a SSH, se utiliza start o stop:

sudo systemctl start ssh

Confirmar que está en el estado en el que quieres; es posible hacer brute force a SSH… para eso lo ideal es utilizar una llave para entrar en SSH.

Para conectarse: ssh usuarioremoto@direcciiónip/DNS (igual que con SFTP).

Cuando uno se conecta dentro de un router también puede uno conectarse utilizando el hostname.local - por ejemplo

$ ssh pi@raspberrypi.local

Enviar un comando aislado

$ ssh pi@raspberrypi.local echo "Hello, world!" >> hello.txt

-t permite que la orden pasada contenga sudo.

Copiar cosas del servidor a local

Desde la terminal del cliente (no desde SSH) se utiliza scp (siempre que esté instalado en servidor y cliente):

$ scp user@server:/home/username/Desktop/testfile.txt ~/Desktop/

Esto no es buena idea; scp no es seguro porque permite ejecutar cosas en el destino utilizando ` `.

Montar una carpeta del servidor en local

A través de sshfs (secure shell file system) es posible montar una carpeta del servidor como un disco.

El proceso sería

$ mkdir ~/Desktop/raspi
$ sshfs pi@raspberrypi.local:/home/pi/Desktop ~/Desktop/raspi

para desmontarlo se usa umount - ver montar discos.

SSH Keys

Para hacer el login a través de llaves, hay que generarlas en el client machine - es decir, en el ordenador desde el cuál se va a acceder al servidor (referencia).

El primer paso es generar las llaves:

$ ssh-keygen -t rsa -b 4096

Para cambiar la contraseña de la llave sin generar una nueva se puede utilizar ssh-keygen -p y seguir los prompts.

En este caso, -t rsa indica el tipo de encriptación que se va a utilizar.

Esto devuelve el sitio en el que se van a guardar las llaves (/home/username/.ssh/id_rsa) y da la opción para introducir un passphrase. Se genera una llave pública (id_rsa.pub) y una llave privada o identificatión (id_rsa) en ese directorio.

Después hay que copiar la llave pública al servidor. Se puede utilizarlo

$ ssh-copy-id user@server

o copiarla directamente en el servidor en ~/.ssh/authorized_keys con permiso 700.

Ahora al logearse no pedirá la contraseña de usuario, pero sí el passphrase generado con la llave (en caso de haber hecho uno).

Para evitar un login con SSH se puede editar /etc/ssh/sshd_config y cambiar lo siguiente:

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no
UsePAM no

y luego sudo systemctl restart ssh.

Raspberry Pi

Una vez conectado a la red, para activar SSH hay que abrir el acceso SSH - hay varias formas:

  • Desde la configuración de escritorio
  • desde raspi-config (un menú contextual)
  • a través de sudo systemctl enable ssh; sudo systemctl start ssh
  • en caso de utilizarlo ‘headless’, se puede colocar un archivo con el nombre ssh en la partición de boot.

Para conectarse a SSH hay que conocer la dirección IP (se hace a través de ifconfig o hostname -I).

IMPORTANTE: CAMBIAR LA CONTRASEÑA DEFAULT PARA EVITAR INTRUSIONES (passwd).