SSH y SCP · 6 min read · Nov 22, 2025
Uso de shell seguro (SSH) para inicio de sesión y copia segura (SCP) para transferencia de datos en Linux
SSH significa shell seguro. Es un protocolo de inicio de sesión remoto cifrado. Una vez que se ha configurado en cada nodo, se puede utilizar para comunicarse con varios otros nodos en esa red.
Los principales beneficios de SSH son:
- SSH utiliza el algoritmo de cifrado RSA para generar claves públicas y privadas, lo que hace que la intrusión sea extremadamente difícil.
- Dado que SSH es un protocolo de inicio de sesión remoto, se puede configurar en una laptop. Eso significa que puedes usar tu laptop para conectarte de forma inalámbrica al clúster de Raspberry Pi.
- Debido a que protocolos como SCP (Copia Segura) y SFTP (Protocolo de Transferencia de Archivos Segura) funcionan sobre SSH, puedes usarlos para transferir archivos y carpetas directamente de un nodo a otro.
- SSH admite inicio de sesión único. Esto significa que solo tienes que ingresar credenciales la primera vez que inicies sesión. A partir del segundo inicio de sesión en adelante, no es necesario.
Comencemos con la generación de claves SSH. Para que SSH se utilice, las claves deben generarse entre dos o más nodos para que la transferencia de datos pueda ocurrir. Usamos RSA para el cifrado. Ten en cuenta que en un nodo, generamos las claves y tendrá las claves privadas o secretas. El mismo nodo también generará una clave pública que se enviará a otros nodos que deseen enviar datos a este nodo. Realiza los siguientes comandos en el nodo desde el que deseas enviar datos. Estoy llamando a este nodo el “nodo maestro” y a los otros nodos “nodos trabajadores”.
cd ~
ssh-keygen --t rsa --C "raspberrypi@raspberrypi"Estos dos comandos establecen una ubicación predeterminada de /home/pi/_ssh/id_rsa para almacenar la clave.
Si se te pide una frase de contraseña, deja la frase de contraseña en blanco. Una vez hecho esto, el siguiente paso es enviar las claves públicas al nodo trabajador. Así que asegúrate de que el nodo trabajador esté conectado a la red. Ahora podemos configurar las claves de cifrado en el nodo trabajador, por lo que la dirección IP utilizada es la dirección IP del nodo trabajador. Ejecuta el siguiente comando en el nodo maestro.
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir .ssh;cat >> .ssh/authorized_keys"Una vez que se generan las claves SSH, podemos iniciar sesión en cualquier otro nodo al que se hayan enviado las claves desde el nodo maestro y para hacerlo usa el comando:
ssh [email protected]En el comando anterior, “pi” indica el usuario, por defecto todos los PIs que usan Raspbian tendrán el usuario como “pi” y “192.168.3.216” es la IP de mi cliente. tendrás que cambiarlo para representar la dirección IP de tu cliente PI.
Esto pedirá una contraseña. Una vez que inicies sesión, todos los comandos que escribas se ejecutarán en ese nodo y no en el maestro, pero la salida se mostrará en el propio maestro. SSH también se puede usar para ejecutar comandos directamente en los otros nodos. Por ejemplo, para cambiar el nombre del host de diferentes nodos, usa estos comandos en un formato como el siguiente:
ssh [email protected] 'sudo echo "cilent001" | sudo nano /etc/hostname'
ssh [email protected] 'sudo echo "cilent002" | sudo nano /etc/hostname'
ssh [email protected] 'sudo echo "cilent003" | sudo nano /etc/hostname'Como se muestra arriba, podemos usar SSH para ejecutar comandos en otros nodos/PIs sin realmente iniciar sesión en ellos. A continuación, se muestra otro ejemplo para apagar de forma segura un nodo en la red con dirección IP 192.168.3.216
ssh [email protected] 'sudo poweroff'La siguiente figura muestra cómo se utiliza SSH para iniciar sesión en un nodo trabajador (192.168.3.216) y desde el nodo trabajador, recuperar el terminal de control al nodo maestro.

Como se puede ver en la figura anterior, iniciar sesión en un nodo trabajador ocurre directamente, es decir, sin entrada de contraseña excepto la primera vez. Pero cada vez que el control del terminal regresa al nodo maestro (192.168.3.215), se deben ingresar las credenciales de inicio de sesión. De esta manera, el maestro siempre está protegido de amenazas externas.
Entonces, después de emitir comandos a través de SSH a otros nodos, puede haber situaciones en las que se deba enviar datos a múltiples nodos. Si el número de nodos es pequeño, entonces podemos iniciar sesión manualmente en cada nodo, conectarlo a una pantalla y teclado, y enviar archivos. Pero esta es una forma muy ineficiente de hacerlo cuando el tamaño del clúster es grande. Una forma más fácil sería usar SCP para enviar archivos. Instala SCP usando el comando:
sudo apt-get install scp
Ten en cuenta que algunos sistemas operativos de Linux pueden venir con SCP preinstalado, pero el Raspbian que estábamos usando no lo tenía. El comando general para enviar un solo archivo es:
scp (ruta del archivo en el dispositivo local) [email protected] (ruta de la ubicación remota)
Ejemplo:
scp /pi/example.c [email protected] /pi/projectAquí, el dispositivo remoto al que se envían datos se reconoce por la dirección IP. Muchos archivos en un directorio se pueden enviar utilizando la opción recursiva (-R). Por ejemplo:
scp -r /pi/project [email protected] /pi/projectEl comando anterior transfiere recursivamente todos los archivos en el /pi/project desde el host local a la carpeta recursiva en el host remoto identificado por la dirección IP.
La imagen a continuación demuestra los diversos comandos ssh y scp. Comienza listando el contenido de su carpeta actual, luego llama a “scp” recursivamente para transferir todos los archivos en la carpeta actual a una carpeta en otro nodo. Luego inicia sesión en el otro nodo y muestra que el scp ha transferido con éxito el contenido al destino.

SCP se puede usar con algunas otras opciones para hacer que la transferencia cumpla con algunas de nuestras condiciones. Aquí hay algunas opciones:
- Podemos usar la opción “-p” para preservar los tiempos de modificación, tiempos de acceso y modos del archivo original. Ejemplo:
scp -p test.c [email protected]:~/Aquí, el tiempo de acceso, modos de acceso y el último tiempo de modificación del archivo “test.c” se preservarán en el nodo de destino también. - SCP permite que los archivos se compriman antes de ser enviados a través de la red al destino. Esto es muy útil cuando el(los) archivo(s) es muy grande para ser transferido, y por lo tanto comprimir aumentará la velocidad a la que se enviará. Para hacer esto usamos la opción “-C”. Ejemplo:
scp -pC test.c [email protected]:~/Aquí podemos ver que se pueden usar múltiples opciones y ambas características se aplicarán al comando. - La programación de sockets implica enviar y recibir datos a través de puertos y SCP se puede usar para enviar datos a través de puertos específicos al host remoto. Esto se puede hacer usando la opción “-P”. Ejemplo:
scp -P 21938 test.c [email protected]:~/Aquí, el puerto utilizado para enviar datos es 1938. - Puede haber casos en los que no desees conocer el estado de la transferencia de archivos, como en la imagen anterior. Tiene sentido desactivar el estado de transferencia cuando hay una gran cantidad de archivos. Podemos hacer eso usando la opción “-q”. Ejemplo:
scp -rq ~/files [email protected]:~/filesAquí, el contenido de la carpeta llamada files se transfiere a la carpeta files en otro nodo, pero la barra de estado y los mensajes de depuración están todos desactivados, es decir, no se muestran.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.