#GNU/#Linux desde la consola - Comando SSH y explicacion basica de funcionamiento
Tabla de contenido:
- Instalar OpenSSH Client
- Instalar OpenSSH Client en Linux
- Instalación de OpenSSH en Ubuntu y Debian
- Instalación de OpenSSH en CentOS y Fedora
- Instalación de OpenSSH Client en Windows 10
- Instalación de OpenSSH Client en macOS
- Cómo usar el comando
ssh
- SSH Config File
- Reenvío de puertos
- Reenvío de puerto local
- Reenvío de puerto remoto
- Reenvío de puerto dinámico
- Conclusión
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 al 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 una serie de 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, macOS y otras.
, explicaremos cómo usar el cliente de línea de comandos OpenSSH (
ssh
) para iniciar sesión en una máquina remota y ejecutar comandos o realizar otras operaciones.
Instalar OpenSSH Client
El programa cliente OpenSSH se llama
ssh
y se puede invocar desde el terminal. El paquete de cliente OpenSSH también proporciona otras utilidades SSH como
scp
y
sftp
que se instalan junto con el comando
ssh
.
Instalar OpenSSH Client 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 utilizando el administrador de paquetes de su distribución.
Instalación de OpenSSH en Ubuntu y Debian
sudo apt update
sudo apt install openssh-client
Instalación de OpenSSH en CentOS y Fedora
sudo dnf install openssh-clients
Instalación de OpenSSH Client 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 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á más o menos así:
Path: Online: True RestartNeeded: False
Instalación de OpenSSH Client en macOS
macOS se entrega con el cliente OpenSSH instalado de forma predeterminada.
Cómo usar el comando
ssh
Deben cumplirse los siguientes requisitos para poder iniciar sesión en una máquina remota a través de SSH:
- Se debe ejecutar 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 comando
ssh
es la siguiente:
ssh:HOST
Para usar el comando
ssh
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 archivo
~/.ssh/known_hosts
.
Escriba
yes
para almacenar la huella digital 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 comando
ssh
usa el nombre de inicio de sesión actual del sistema.
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 la opción
-l
:
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 ataques automatizados
Para conectarse en un puerto no predeterminado, use la opción
-p
para especificar el puerto:
ssh -p 5522 username@hostname
ssh -v username@hostname
Para aumentar el nivel de verbosidad, use
-vv
o
-vvv
.
El comando
ssh
acepta varias opciones.
Para obtener una lista completa de todas las opciones, lea la página de
man ssh
escribiendo
man ssh
en su terminal.
SSH Config File
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 conecta.
A continuación se muestra una configuración SSH de muestra:
Host dev HostName dev.linuxize.com User mike Port 4422
Cuando invoque al cliente ssh escribiendo
ssh dev
el comando leerá el archivo
~/.ssh/config
y usará los detalles de conexión que se especifican para el host dev. 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.
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.
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Se le pedirá que escriba una frase de contraseña segura. Si desea utilizar la 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 archivo del usuario remoto
authorized_keys
.
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
El túnel SSH o el reenvío de puertos SSH es un método para crear una conexión SSH encriptada entre un cliente y una máquina servidor a través de la cual se pueden retransmitir los puertos de servicios.
El reenvío de SSH es útil para transportar datos de red de servicios que utilizan un protocolo no cifrado, como VNC o FTP, para acceder a contenido geo-restringido o evitar firewalls intermedios. Básicamente, puede reenviar cualquier puerto TCP y hacer un túnel del 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 la opción
-L
al cliente
ssh
:
ssh -L LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname
La opción -f le dice al comando
ssh
que se ejecute en segundo plano y que
-N
no ejecute un comando remoto.
Reenvío de puerto remoto
El reenvío de puerto remoto es lo opuesto al reenvío de puerto local. Reenvía un puerto desde el host del servidor al host del cliente y luego al puerto del host de destino.
La opción
-L
le dice a
ssh
que cree un reenvío de puerto remoto:
ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname
Reenvío de puerto dinámico
El reenvío dinámico de puertos 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 la opción
-D
al cliente ssh:
ssh -D LOCAL_PORT -N -f username@hostname
Para obtener información más detallada e instrucciones paso a paso, consulte el artículo sobre 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 comando
ssh
seguido del nombre de usuario remoto y el nombre de host (
ssh username@hostname
).
Saber cómo usar el comando
ssh
es esencial para administrar el servidor remoto.
Centro de comando de puestos de Red Hat
El servicio de monitoreo de sistemas y aplicaciones Linux está ahora en línea, con una versión de prueba gratuita.
Restaurar el comando 'Ejecutar' al menú de inicio de Vista
Microsoft cree que la mayoría de los usuarios no necesitan ejecutar Ejecutar. Si no eres uno de ellos, sigue estos sencillos pasos para restaurar la función.
Aproveche la línea de comando con Take Command
Integre el símbolo del sistema, la GUI y un potente lenguaje de proceso por lotes con el potente kit de herramientas Take Command.