GNU/Linux >> Tutoriales Linux >  >> Linux

Comandos SSH en Linux con ejemplos de uso

SSH es un protocolo de red para iniciar sesión de forma segura en una máquina remota y ejecutar comandos. Está diseñado y creado para brindar la mejor seguridad al acceder a otra computadora de forma remota. Siempre que una computadora envíe datos a la red, ssh los cifrará automáticamente.

Para usar SSH, la máquina de destino debe tener instalada una aplicación de servidor SSH porque SSH es un modelo cliente-servidor. Un servidor SSH, de forma predeterminada, escucha en el puerto TCP estándar 22. El cliente SSH está disponible de forma predeterminada en todas las distribuciones de Linux.

En este tutorial, aprendemos Comandos SSH en Linux con ejemplos de uso.

Requisitos

  • Un cliente SSH
  • Un servidor SSH
  • Dirección IP o nombre del servidor remoto

1. Cómo usar SSH en un servidor remoto

Un servidor remoto se conecta mediante una dirección IP o el nombre del host. Para conectar ssh usando una dirección IP, use el siguiente comando:

ssh [ IP ADDRESS]

Para conectarse a ssh usando el nombre, use el siguiente comando:

ssh [ HOSTNAME ]

Por ejemplo, para conectarse a un host remoto usando la dirección IP 192.168.239.133, el comando sería el siguiente.

$ ssh 192.168.239.133

Cuando se conecta por primera vez a un host, aparece un mensaje que le pregunta si desea continuar conectándose. Escriba sí, luego ingrese la contraseña para su host remoto.

2. SSH con nombre de usuario

SSH usa el usuario actual del servidor remoto cuando intenta conectarse. Para conectarse a ssh con nombre de usuario, use la siguiente sintaxis.

ssh [USERNAME]@[HOSTNAME/IP ADDRESS]

Por ejemplo, para conectarse al host remoto con la dirección IP 192.168.239.134 con un nombre de usuario kali, use el siguiente comando.

$ ssh [email protected]

3. SSH con un número de puerto diferente

El servidor SSH escucha el puerto TCP 22 de forma predeterminada, pero si desea cambiarlo, debe especificar el puerto en el comando.

Para conectarse a un host remoto usando un número de puerto diferente, use el indicador -p como se muestra en la siguiente sintaxis.

ssh [ IP ADDRESS/HOSTNAME ] -p [ PORT NUMBER ]

Por ejemplo, para conectarse al host remoto con una dirección IP de 192.168.239.134 usando el número de puerto 223, use el siguiente comando.

$ ssh 192.168.239.134 -p 223

4. SSH sin contraseña

En tres sencillos pasos, puede conectarse a su host remoto mediante ssh sin contraseña. Los tres pasos necesarios para iniciar sesión en un servidor remoto sin ingresar una contraseña son los siguientes.

Generar clave SSH

Para generar claves SSH, se utiliza ssh-keygen, que crea las claves públicas y privadas. Estos pares de claves se utilizan para la autenticación entre clientes y servidores.

Para crear un par de claves, ingrese el siguiente comando en la máquina cliente.

$ ssh-keygen -t rsa

Ingresa la ubicación y parafrasea, o presiona enter para usar la configuración predeterminada.

Copiar clave SSH pública

Debe copiar la clave SSH pública en un servidor remoto para usar el par de claves. Para copiar la clave SSH pública en el servidor remoto, use la siguiente sintaxis en la máquina host.

ssh-copy-id [USERNAME]@[HOSTNAME/IP ADDRESS]

Para copiar la clave SSH desde la dirección IP 192.168.239.134, use el siguiente comando.

$ ssh-copy-id [email protected]

Iniciar sesión de forma remota sin contraseña

Ahora puede iniciar sesión en el servidor remoto sin contraseña usando el siguiente comando.

ssh [USERNAME]@[HOSTNAME/IP ADDRESS]

Por ejemplo, para conectarse al host remoto con la dirección IP 192.168.239.134 con un nombre de usuario kali, use el siguiente comando.

$ ssh [email protected]

5. Ejecute un comando en el servidor remoto usando SSH

El comando ssh se puede utilizar para iniciar sesión en el servidor remoto. También se puede utilizar para ejecutar comandos en el servidor remoto.

La sintaxis básica para ejecutar comandos a través de ssh es la siguiente.

ssh USER1@SERVER1 COMMAND1

ssh USER1@SERVER1 'COMMAND2'

ssh USER1@SERVER1 'COMMAND1 | COMMAND2'

ssh ADMIN@BOX1 "COMMAND1; COMMAND2; COMMAND3"

Para obtener la fecha y la hora del servidor remoto, use la siguiente sintaxis:

ssh USER1@SERVER1 date

Por ejemplo, para obtener la fecha del usuario de kali del servidor de la dirección IP 192.168.239.134, use el siguiente comando.

$ ssh [email protected] date

Para comprobar el uso del espacio en disco del servidor remoto, la sintaxis es la siguiente.

ssh USER1@SERVER1 'df -H'

Por ejemplo, para obtener el uso del espacio en disco del usuario kali del servidor de la dirección IP 192.168.239.134, use el siguiente comando.

$ ssh [email protected] 'df -H'

Para verificar los últimos registros de reinicio del usuario remoto, use la siguiente sintaxis.

ssh USER1@SERVER1 "last reboot"

Por ejemplo, para obtener los últimos registros de reinicio de los usuarios de kali desde el servidor de la dirección IP 192.168.239.134, use el siguiente comando.

$ ssh [email protected] "last reboot"

Opciones de línea de comando SSH

Veamos algunas de las opciones disponibles con el comando ssh.

ssh -C

Use la opción -C con ssh para solicitar la compresión de todos los datos recibidos o transferidos desde el servidor remoto, como se ve en la siguiente sintaxis.

ssh -C [USERNAME]@[HOSTNAME/IP ADDRESS]

Por ejemplo,

$ ssh -C [email protected]

ssh-v

La opción -v se usa con el comando ssh para depurar el cliente ssh. La siguiente es la sintaxis:

$ ssh -v [USERNAME]@[HOSTNAME/IP ADDRESS]

Por ejemplo,

$ ssh -v [email protected]

ssh -b

La opción -b se usa para vincular una dirección IP a una conexión SSH. La dirección IP se utilizará como la dirección de origen de la conexión SSH. Esto se usa cuando un cliente tiene más de dos direcciones IP y es posible que no sepa qué dirección IP se usa para crear una conexión con el servidor SSH.

Por ejemplo,

$ ssh -b 192.168.239.133 [email protected]

El comando vinculará la dirección IP al servidor remoto. Podemos verificarlo usando netstat |grep ssh comando para comprobar la conexión.

ssh -F

La opción -F se usa junto con el comando ssh para especificar una configuración por usuario. El archivo de configuración predeterminado es ~/.ssh/config.

Para usar un archivo de configuración específico, use la opción -F de la siguiente manera.

$ ssh -F [File Location] [USERNAME]@[HOSTNAME/IP ADDRESS]

Por ejemplo,

$ ssh -F /etc/ssh/ssh_config.d [email protected]

ssh-L

La opción -L se utiliza para el reenvío de puertos locales. El reenvío de puerto local nos permite enrutar el tráfico desde nuestro host a un puerto de destino a través de un proxy.

La sintaxis básica para el reenvío de puerto local es la siguiente.

ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATIONPORT [USERNAME]@[HOSTNAME/IP ADDRESS]

Por ejemplo, ejecute el siguiente comando para conectarse al host remoto en el puerto 3306 del usuario kali con IP 192.168.239.134 desde el host local 192.168.239.133 en el puerto 3336.

$  ssh -L 3336:192.168.239.133:3306 [email protected]

ssh -R

La opción -R se usa junto con el comando SSH para habilitar el reenvío de puertos remotos. Esto significa que puede reenviar un puerto en el servidor remoto a un puerto en su máquina local, que luego se reenvía a un puerto en la máquina de destino.

La sintaxis básica para el reenvío de puertos remotos es la siguiente.

ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT [USERNAME]@[HOSTNAME/IP ADDRESS]

Por ejemplo,

$ ssh -R 3336:192.168.239.133:3000 [email protected]

El comando hará que ssh escuche al servidor ssh en el puerto 3336 y canalice todo el tráfico al puerto 3000.

ssh-C-D

La opción -D habilita el reenvío de puertos dinámico. El puerto habitual de SOCKS es 1001, sin embargo, se puede utilizar cualquier número de puerto; sin embargo, algunos programas solo funcionarán en el puerto 1001.

La sintaxis básica para el reenvío dinámico es la siguiente.

ssh -D [LOCAL_IP:]LOCAL_PORT [USERNAME]@[HOSTNAME/IP ADDRESS]

Por ejemplo,

$ sudo ssh -C -D 1001 [email protected] 

-D especifica el reenvío de puerto dinámico en el puerto 1001 y -C habilita la compresión.

ssh -X

La opción -X se usa junto con ssh para el reenvío X11. La siguiente es la sintaxis para el reenvío X11.

ssh -X [USERNAME]@[HOSTNAME/IP ADDRESS]

Use el siguiente comando para habilitar el reenvío X11 en el usuario kali con la dirección IP 192.168.239.134.

$ ssh -X 192.168.239.134

ssh -Y

La opción -Y se usa junto con ssh para el reenvío Trusted X11. Esto significa que el X11 remoto tendrá acceso total a la pantalla X11 original.

ssh -Y [USERNAME]@[HOSTNAME/IP ADDRESS]

Use el siguiente comando para habilitar el reenvío Trusted X11 en el usuario de Kali con la dirección IP 192.168.239.134.

$ ssh -Y 192.168.239.134

ssh-o

La opción -o se puede utilizar con otras opciones.

Por ejemplo,

$ ssh -o "batchmode=yes" [email protected]

Si usa ssh -o "batchmode=yes", el comando se ejecutará correctamente en la máquina remota si la conectividad sin contraseña está habilitada; de lo contrario, devolverá un error.

Algunas de las opciones de línea de comandos más importantes se muestran en la siguiente tabla.

Conclusión

En este tutorial, aprendimos a usar el comando ssh junto con ejemplos útiles. Gracias por leer, proporcione sus comentarios y sugerencias en la sección de comentarios a continuación.


Linux
  1. Envía comandos a múltiples sesiones SSH con Terminator

  2. Comando wc Linux con ejemplos

  3. 19 comandos SSH comunes en Linux con ejemplos

  4. Más de 10 comandos de Linux VI con ejemplos

  5. Comando JQ en Linux con ejemplos

Comandos de Nmap con ejemplos

Comandos RPM en Linux con ejemplos

Ejecutar comandos en sistemas Linux remotos a través de SSH

Uso del comando SSH en sistemas Linux/Unix

Uso del comando Linux mv con ejemplos

Uso del comando sed de Linux con ejemplos

    Opción Descripción
    -A Permite reenviar la conexión del agente de autenticación.
    -a Deshabilita la conexión del agente de autenticación para ser reenviado.
    -b Se utiliza para vincular direcciones de origen.
    -C Se utiliza para la compresión de datos.
    -c especificación_cifrado Selecciona la especificación de cifrado para cifrar la sesión.
    -D Es responsable del reenvío de puertos dinámico a nivel de aplicación.
    -E archivo_de_registro Agrega registros de depuración a log_file en lugar del error estándar.
    -F archivo de configuración Especifica un archivo de configuración por usuario.
    -g Permite que los hosts remotos se conecten a los puertos reenviados locales.
    -i archivo_identidad Lee la clave privada para la autenticación de clave pública.
    -j Especifica una directiva de configuración de ProxyJump.
    -l nombre_de_inicio de sesión Especifica el usuario para iniciar sesión en la máquina remota.
    -p puerto Se utiliza para especificar el puerto para conectarse al host remoto.
    -q Es el modo silencioso.
    -V Modo detallado.
    -X Habilita el reenvío X11
    -Y Habilita el reenvío Trusted X11