GNU/Linux >> Tutoriales Linux >  >> Linux

Uso de shell seguro (SSH) para inicio de sesión y copia segura (SCP) para transferencia de datos en Linux

SSH significa caparazón seguro. Es un protocolo de inicio de sesión remoto encriptado. Una vez que se ha configurado en cada nodo, se puede usar para comunicarse con varios otros nodos en esa red.

Los principales beneficios de SSH son:

  • SSH utiliza el algoritmo de encriptación RSA para generar claves públicas y privadas, lo que dificulta enormemente la intrusión.
  • Dado que SSH es un protocolo de inicio de sesión remoto, se puede configurar en una computadora portátil. Eso significa que puede usar su computadora portátil para conectarse de forma inalámbrica al clúster Raspberry Pi.
  • Debido a que protocolos como SCP (Secure Copy) y SFTP (Secure File Transfer Protocol) se ejecutan sobre SSH, puede usarlos para transferir archivos y carpetas directamente de un nodo a otro.
  • SSH admite un inicio de sesión único. Esto significa que solo tiene que ingresar las credenciales la primera vez que inicia sesión. A partir del segundo inicio de sesión, no es necesario.

Comencemos con la generación de claves SSH. Para que se utilice el SSH, las claves deben generarse entre dos o más nodos para que pueda ocurrir la transferencia de datos. Usamos el RSA para el cifrado. Tenga 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. Ejecute los siguientes comandos en el nodo desde el que desea enviar datos. Llamo a este nodo "nodo maestro" y a los otros nodos "nodos trabajadores".

cd ~
ssh-keygen --t rsa --C "[email protected]"

Estos dos comandos establecen una ubicación predeterminada de /home/pi/_ssh/id_rsa para almacenar la clave.

Si se le solicita una frase de contraseña, déjela en blanco. Una vez hecho esto, el siguiente paso es enviar las claves públicas al nodo trabajador. Así que asegúrese de tener el nodo trabajador 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. Ejecute el siguiente comando en el nodo maestro.

cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir .ssh;cat >> .ssh/authorized_keys"

Una vez generadas las claves SSH, podemos iniciar sesión en cualquier otro nodo al que se hayan enviado las claves desde el nodo maestro y para ello utilizar el comando:

ssh [email protected]

En el comando anterior, "pi" indica el usuario, por defecto todos los PI que usan Raspbian tendrán al usuario como "pi" y "192.168.3.216" es la IP de mi cliente. tendrá que cambiarlo para que represente la dirección IP de su cliente PI.

Esto le pedirá una contraseña. Una vez que inicie sesión, todos los comandos que escriba se ejecutarán en ese nodo y no en el maestro, pero la salida se mostrará en el maestro mismo. SSH también se puede usar para ejecutar comandos directamente en los otros nodos. Por ejemplo, para cambiar el nombre de host de diferentes nodos, use 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/PI sin iniciar sesión en ellos. El siguiente es otro ejemplo para cerrar de manera segura un nodo en la red con la dirección IP 192.168.3.216

ssh [email protected] 'sudo poweroff'

La siguiente figura muestra cómo se usa SSH para iniciar sesión en un nodo de trabajo (192.168.3.216) y desde el nodo de trabajo, llevar la terminal de control al nodo maestro.

Como se puede ver en la figura anterior, el inicio de sesión en un nodo trabajador se realiza directamente, es decir, sin ingreso de contraseña, excepto la primera vez. Pero cada vez que el control de la terminal vuelve al nodo maestro (192.168.3.215), se debe ingresar la credencial de inicio de sesión. De esta manera, el maestro siempre está protegido de amenazas externas.

Por lo tanto, después de emitir comandos a través de SSH a otros nodos, puede haber situaciones en las que los datos deban enviarse a varios nodos. Si la cantidad de nodos es pequeña, 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. Instale SCP usando el comando:

sudo apt-get install scp

Tenga en cuenta que algunos sistemas operativos 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/project

Aquí, el dispositivo remoto al que se envían los datos se reconoce por la dirección IP. Muchos archivos en un directorio se pueden enviar usando la opción recursiva (-R). Por ejemplo:

scp -r /pi/project [email protected] /pi/project

El comando anterior transfiere recursivamente todos los archivos en /pi/project desde el host local a la carpeta recursivamente en el host remoto identificado por la dirección IP.

La siguiente imagen muestra los diversos comandos ssh y scp. Comienza enumerando el contenido de su carpeta actual, luego llama "scp" recursivamente para transferir todos los archivos de 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 utilizar con algunas otras opciones para realizar la transferencia para cumplir con algunas de nuestras condiciones. Aquí hay algunas opciones:

    • Podemos usar la opción "-p" para conservar los tiempos de modificación, los tiempos de acceso y los modos del archivo original. Ejemplo:

      scp -p test.c [email protected]:~/

      Aquí el tiempo de acceso, los modos de acceso y el tiempo de última modificación del archivo "test.c" también se conservarán en el nodo de destino.

    • SCP permite que los archivos se compriman antes de que puedan enviarse a través de la red al destino. Esto es muy útil cuando los archivos son muy grandes para transferir y, por lo tanto, la compresión aumentará la velocidad a la que se enviarán. Para ello utilizamos la opción "-C". Ejemplo:

      scp -pC test.c [email protected]:~/

      Aquí podemos ver que se pueden usar múltiples opciones y ambas funciones se aplicarán al comando.

    • La programación de socket 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 desee conocer el estado de la transferencia de archivos, como en la imagen de arriba. Tiene sentido desactivar el estado de transferencia cuando hay una gran cantidad de archivos. Podemos hacerlo usando la opción "-q". Ejemplo:

scp -rq ~/files [email protected]:~/files

Aquí, el contenido de la carpeta llamada archivos se transfiere a la carpeta de archivos en otro nodo, pero la barra de estado y los mensajes de depuración están deshabilitados, eso no se muestra.


Linux
  1. Cómo transferir archivos entre servidores en Linux usando SCP y FTP

  2. ¿Cómo convertir un archivo PPK a claves OpenSSH e iniciar sesión usando SSH en Linux?

  3. Las 5 mejores aplicaciones de Android SSH y FTP para Linux

  4. Cómo transferir archivos en Linux con SCP y Rsync

  5. 11 comandos útiles "ssh" y "scp" en Linux

Tutorial del comando chsh de Linux para principiantes (5 ejemplos)

Cómo hacer una copia de seguridad y restaurar datos usando Ristic en Linux

¿Cómo deshabilitar el inicio de sesión SSH para el usuario raíz en Linux?

Cómo transferir archivos de forma segura usando el comando SCP en Linux

Los 8 mejores teléfonos Linux seguros para privacidad y seguridad

Usando rz y sz bajo Linux Shell