GNU/Linux >> Tutoriales Linux >  >> Linux

Comando SSH

Secure Shell (SSH) es un protocolo de red criptográfico utilizado para una conexión cifrada entre un cliente y un servidor. El cliente ssh crea una conexión segura con el servidor SSH en una máquina remota. La conexión cifrada se puede usar para ejecutar comandos en el servidor, túneles X11, reenvío de puertos y más.

Hay varios clientes SSH disponibles, tanto gratuitos como comerciales, siendo OpenSSH el cliente más utilizado. Está disponible en todas las plataformas principales, incluidas Linux, OpenBSD, Windows y macOS.

Este artículo explica cómo usar el cliente de línea de comandos de OpenSSH (ssh ) para iniciar sesión en una máquina remota y ejecutar comandos o realizar otras operaciones.

Instalando el Cliente OpenSSH #

El programa cliente de OpenSSH se llama ssh y se puede invocar desde la terminal. El paquete de cliente OpenSSH también proporciona otras utilidades SSH como scp y sftp que se instalan junto con el ssh comando.

Instalación del cliente OpenSSH en Linux #

El cliente OpenSSH está preinstalado en la mayoría de las distribuciones de Linux de forma predeterminada. Si su sistema no tiene instalado el cliente ssh, puede instalarlo usando su administrador de paquetes de distribución.

Instalando OpenSSH en Ubuntu y Debian #

sudo apt updatesudo apt install openssh-client

Instalando OpenSSH en CentOS y Fedora #

sudo dnf install openssh-clients

Instalación del cliente OpenSSH en Windows 10 #

La mayoría de los usuarios de Windows usan Putty para conectarse a una máquina remota a través de SSH. Sin embargo, las últimas versiones de Windows 10 incluyen un cliente y un servidor OpenSSH. Ambos paquetes se pueden instalar a través de la GUI o PowerShell.

Para encontrar el nombre exacto del paquete OpenSSH, escriba el siguiente comando:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

El comando debería devolver algo como esto:

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

Una vez que sepa el nombre del paquete, instálelo ejecutando:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

En caso de éxito, la salida se verá así:

Path          :
Online        : True
RestartNeeded : False

Instalación del cliente OpenSSH en macOS #

macOS se envía con el cliente OpenSSH instalado de forma predeterminada.

Cómo usar ssh Comando #

Se deben cumplir los siguientes requisitos para poder iniciar sesión en una máquina remota a través de SSH:

  • Debe estar ejecutándose un servidor SSH en la máquina remota.
  • El puerto SSH debe estar abierto en el firewall de la máquina remota.
  • Debe conocer el nombre de usuario y la contraseña de la cuenta remota. La cuenta debe tener los privilegios adecuados para el inicio de sesión remoto.

La sintaxis básica del ssh El comando es el siguiente:

ssh [OPTIONS] [USER@]:HOST

Para usar el ssh comando, abra su Terminal o PowerShell y escriba ssh seguido del nombre de host remoto:

ssh ssh.linuxize.com

Cuando se conecta a una máquina remota a través de SSH por primera vez, verá un mensaje como el siguiente.

The authenticity of host 'ssh.linuxize.com (192.168.121.111)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?

Cada host tiene una huella digital única que se almacena en el ~/.ssh/known_hosts archivo.

Escribe yes para almacenar la huella dactilar remota y se le pedirá que ingrese su contraseña.

Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts.

[email protected]'s password:

Una vez que ingrese la contraseña, iniciará sesión en la máquina remota.

Cuando no se proporciona el nombre de usuario, el ssh El comando utiliza el nombre de inicio de sesión del sistema actual.

Para iniciar sesión como un usuario diferente, especifique el nombre de usuario y el host en el siguiente formato:

ssh username@hostname

El nombre de usuario también se puede especificar con -l opción:

ssh -l username hostname

De manera predeterminada, cuando no se proporciona ningún puerto, el cliente SSH intentará conectarse al servidor remoto en el puerto 22. En algunos servidores, los administradores están cambiando el puerto SSH predeterminado para agregar una capa adicional de seguridad al servidor al reducir el riesgo de automatización. ataques.

Para conectarse a un puerto no predeterminado, use -p opción para especificar el puerto:

ssh -p 5522 username@hostname

Si tiene problemas de autenticación o conexión, use -v opción para decirle a ssh para imprimir mensajes de depuración:

ssh -v username@hostname

Para aumentar el nivel de verbosidad, use -vv o -vvv .

El ssh El comando acepta varias opciones.

Para obtener una lista completa de todas las opciones, lea el ssh página man escribiendo man ssh en tu terminal.

Número de archivo de configuración SSH

Si se conecta diariamente a varios sistemas remotos a través de SSH, encontrará que recordar todas las direcciones IP remotas, diferentes nombres de usuario, puertos no estándar y varias opciones de línea de comandos es difícil, si no imposible.

El cliente OpenSSH lee las opciones establecidas en el archivo de configuración por usuario (~/.ssh/config ). En este archivo, puede almacenar diferentes opciones de SSH para cada máquina remota a la que se conecte.

A continuación se muestra una configuración de SSH de muestra:

Host dev
    HostName dev.linuxize.com
    User mike
    Port 4422

Cuando invoque el cliente ssh escribiendo ssh dev , el comando leerá el ~/.ssh/config y use los detalles de conexión especificados para el host de desarrollo. En este ejemplo, ssh dev es equivalente a lo siguiente:

ssh -p 4422 [email protected]

Para obtener más información, consulte el artículo sobre el archivo de configuración SSH.

Número de autenticación de clave pública

El protocolo SSH admite varios mecanismos de autenticación.

El mecanismo de autenticación basado en clave pública le permite iniciar sesión en el servidor remoto sin tener que escribir su contraseña.

Este método funciona generando un par de claves criptográficas que se utilizan para la autenticación. La clave privada se almacena en el dispositivo cliente y la clave pública se transfiere a cada servidor remoto en el que desea iniciar sesión. El servidor remoto debe estar configurado para aceptar la autenticación de clave.

Si aún no tiene un par de claves SSH en su máquina local, puede generar uno escribiendo:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Se le pedirá que escriba una frase de contraseña segura. Si desea utilizar una frase de contraseña, depende de usted.

Una vez que tenga su par de claves, copie la clave pública en el servidor remoto:

ssh-copy-id username@hostname

Ingrese la contraseña del usuario remoto y la clave pública se agregará al usuario remoto authorized_keys archivo.

Una vez cargada la clave, puede iniciar sesión en el servidor remoto sin que se le solicite una contraseña.

Al establecer una autenticación basada en claves, puede simplificar el proceso de inicio de sesión y aumentar la seguridad general del servidor.

Reenvío de puertos #

La tunelización SSH o el reenvío de puertos SSH es un método para crear una conexión SSH cifrada entre un cliente y una máquina servidor a través de la cual se pueden retransmitir los puertos de servicios.

El reenvío SSH es útil para transportar datos de red de servicios que utilizan un protocolo sin cifrar, como VNC o FTP, para acceder a contenido restringido geográficamente o para eludir firewalls intermedios. Básicamente, puede reenviar cualquier puerto TCP y canalizar el tráfico a través de una conexión SSH segura.

Hay tres tipos de reenvío de puertos SSH:

Reenvío de puerto local #

El reenvío de puerto local le permite reenviar una conexión desde el host del cliente al host del servidor SSH y luego al puerto del host de destino.

Para crear un reenvío de puerto local, pase -L opción al ssh cliente:

ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname

La opción -f le dice al ssh comando para ejecutar en segundo plano y -N no ejecutar un comando remoto.

Reenvío de puerto remoto #

El reenvío de puertos remotos es lo opuesto al reenvío de puertos locales. Reenvía un puerto desde el host del servidor al host del cliente y luego al puerto del host de destino.

El -R opción le dice a ssh para crear un reenvío de puerto remoto:

ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname

Reenvío de puerto dinámico #

El reenvío de puertos dinámico crea un servidor proxy SOCKS que permite la comunicación a través de una variedad de puertos.

Para crear un reenvío de puerto dinámico (SOCKS), pase -D opción al cliente ssh:

ssh -D [LOCAL_IP:]LOCAL_PORT  -N -f username@hostname

Para obtener información más detallada e instrucciones paso a paso, consulte el artículo Cómo configurar el túnel SSH (reenvío de puertos).

Conclusión #

Para conectarse a un servidor remoto a través de SSH, use el ssh comando seguido del nombre de usuario y el nombre de host remotos (ssh username@hostname ).

Saber usar el ssh El comando es esencial para administrar servidores remotos.

Si tiene alguna pregunta, deje un comentario a continuación.


Linux
  1. Cómo encontrar conexiones SSH activas en Linux

  2. Ssh:¿restringir un usuario de Ssh/scp/sftp a un directorio?

  3. comando linux mv

  4. SSH:cómo incluir el comando -t en el archivo ~/.ssh/config

  5. Comando de Linux para esperar a que un servidor SSH esté activo

Comando W en Linux

Al mando en Linux

Cómo pasar la contraseña al comando SSH en Linux

Uso del comando SSH en sistemas Linux/Unix

Conéctese con OpenSSH (Windows)

Haciendo un comando de larga ejecución en ssh