Cómo ejecutar comandos de Linux en el sistema remoto a través de SSH?

Cómo ejecutar comandos de Linux en el sistema remoto a través de SSH?

Para trabajar en el sistema remoto, primero, inicie sesión en ese sistema, ejecute comandos para realizar diferentes tareas y luego inicie sesión desde esa sesión. Incluso para ejecutar un solo comando en un sistema remoto, debe pasar por todos los pasos. Mientras trabaja en los sistemas locales y remotos uno al lado del otro, debe cambiar entre ellos varias veces. Iniciar sesión y salir desde un sistema varias veces puede ser molesto. Debe haber una forma que le permita ejecutar comandos en un sistema remoto sin iniciar sesión en él.Afortunadamente, hay una manera que podemos mostrarle cómo ejecutar comandos en un sistema remoto a través de SSH directamente desde su máquina local.

Requisitos previos

Como requisitos previos, debes tener:

  • Máquina Ubuntu
  • Usuario con privilegios de sudo

Nota: Los comandos mencionados en este tutorial se han ejecutado en Ubuntu 20.04 terminal LTS (fosa focal), que se puede abrir a través del atajo Ctrl+Alt+T. Los mismos comandos también son aplicables para Linux Mint y Debian.

Ejecutar comandos de Linux en el sistema remoto a través de SSH

Para ejecutar un comando en un sistema remoto desde su sistema local, use la siguiente sintaxis:

$ ssh

Dónde nombre de usuario ¿Está el usuario en el sistema remoto?, hostname/ip_address es el nombre de host o la dirección IP del sistema remoto. El Comando/script es el comando o script que desea ejecutar en el sistema remoto.

Si el SSH se ejecuta en algún puerto que no sea el puerto predeterminado, asegúrese de mencionarlo usando el indicador -p de la siguiente manera:

$ ssh -p

Ejecutar un solo comando en el sistema remoto

Digamos que necesita encontrar el nombre de host del sistema remoto. En este caso, el comando que necesita ejecutar en el sistema local sería:

$ ssh [email protected] nombre de host

Ahora, se le pedirá que proporcione la contraseña para el usuario remoto. Escriba la contraseña y presione Entrar.

En la siguiente salida, "MyPC" es el nombre de host del sistema remoto.


También puede encerrar el comando en una sola (") o comas de doble invertida (" ") como esta:

$ ssh [email protected] "Nombre de host"

Ejecutar múltiples comandos en el sistema remoto

Si necesita ejecutar múltiples comandos en el sistema remoto a través de SSH, separarlos usando (;) o (&&) y encerrarlos en comas invertidas (""). Si no coloca los múltiples comandos en comas invertidas, solo se ejecutará el primer comando en la máquina remota, y los otros comandos se ejecutarán en la máquina local.

$ ssh "Command1 && Command2"

o

$ ssh "Comando1; comando2 "

Usando el separador &&

Si usa el separador (&&), el segundo comando se ejecutará solo si el primer comando se ejecuta correctamente. Por ejemplo, para ejecutar los comandos "Mkdir" y "LS" en el sistema remoto, deberá emitir el siguiente comando en su sistema local:

$ ssh -t [email protected] "Mkdir myfiles && ls"

Ahora, se le pedirá que proporcione la contraseña para el usuario remoto. Escriba la contraseña y presione Entrar.

El siguiente es la salida de los comandos ejecutados en un sistema remoto. El segundo comando "LS" solo se ejecutará en el sistema remoto si el primer comando "MKDIR" tiene éxito.


Este comando también es útil al actualizar el sistema. En general, se realiza una actualización del sistema después de una actualización. Por lo tanto, con el comando anterior, puede hacer que la actualización del sistema se ejecute solo si las actualizaciones tienen éxito.

Utilizando el ; separador

Si usa el separador (;), el segundo comando se ejecutará sin importar si el primer comando fue exitoso o no. Por ejemplo, para ejecutar los comandos "Name de host" y "IP R" en el sistema remoto, deberá emitir el siguiente comando en su sistema local:

$ ssh [email protected] "Nombre de host; ip r "

Ahora, se le pedirá que proporcione la contraseña para el usuario remoto. Escriba la contraseña y presione Entrar.

El siguiente es la salida de los comandos ejecutados en un sistema remoto. El segundo comando "IP R" se ejecutará incluso si el primer comando no tiene éxito.

Ejecutar el comando en un sistema remoto con privilegios de sudo

Algunos comandos en Linux requieren privilegios elevados como instalar o eliminar cualquier software, agregar o eliminar a un usuario, cambiar las configuraciones del sistema, etc. Cuando ejecuta un comando en los sistemas remotos que requieren privilegios de sudo, primero se le solicitará la contraseña para el usuario remoto, y luego se le pedirá que la contraseña de sudo ejecute el comando.

Por ejemplo, para actualizar los repositorios del sistema en el sistema remoto, deberá ejecutar el siguiente comando en su sistema local:

$ ssh -t [email protected] "Actualización de sudo apt"

El siguiente es la salida del comando ejecutado en un sistema remoto con privilegios elevados.


NOTA: Entonces, la opción -t se usa aquí para asignar con fuerza TTY.

Ejecutar el comando en el sistema remoto y guardar su salida al sistema local

La salida de los comandos ejecutados en los sistemas remotos también se puede guardar en el sistema local. Por ejemplo, el siguiente comando ejecutará el comando ifconfig en el sistema remoto, y luego guardará su salida en un archivo llamado IP.txt en el escritorio de la máquina local.

$ ssh -t [email protected] "Ifconfig"> ~/escritorio/ip.TXT

Ejecutar script local en un sistema remoto

El script colocado en el sistema local también se puede ejecutar en el sistema remoto. Expliquemos esto creando un script llamado muestra.SH en el sistema local.

$ SUDO NANO Muestra.mierda

Agregue las líneas a continuación en el archivo de script:

#!/bin/bash
fecha
nombre de host
ruta IP
ping -c 3 google.comunicarse

Ahora, guarde y cierre el script.


Ahora, para ejecutar la muestra de script.SH en el sistema remoto, emita el siguiente comando en terminal:

$ ssh -t [email protected] 'bash -s; < sample.sh

Aquí está la salida después de ejecutar el script en un sistema remoto:


Eso es todo lo que hay! En este tutorial, le hemos mostrado cómo ejecutar comandos en un sistema remoto a través de SSH. Hace que trabajar en el sistema remoto sea muy fácil y también lo ahorra de la molestia de iniciar sesión y salir desde el sistema remoto varias veces.