El protocolo de shell seguro (SSH) es el método más común para controlar máquinas remotas a través de la línea de comandos en el mundo de Linux. SSH es un verdadero original de Linux y también está ganando popularidad en el mundo de Windows. Incluso hay documentación oficial de Windows para SSH, que cubre el control de máquinas Windows usando OpenSSH.
Este artículo describe cómo establecer una conexión SSH desde una máquina Windows a un sistema Fedora 33 Linux utilizando la popular herramienta de código abierto PuTTY.
Formas de usar SSH
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
SSH utiliza una arquitectura cliente-servidor, donde un cliente SSH establece una conexión con un servidor SSH. El servidor SSH generalmente se ejecuta como un demonio del sistema, por lo que a menudo se lo llama SSHD. Es difícil encontrar una distribución de Linux que no venga con el demonio SSH. En Fedora 33, el demonio SSH está instalado pero no activado.
Puede usar SSH para controlar casi cualquier máquina Linux, ya sea que se ejecute como una máquina virtual o como un dispositivo físico en su red. Un caso de uso común es la configuración sin periféricos de dispositivos integrados, incluida la Raspberry Pi. SSH también se puede utilizar para tunelizar otros servicios de red. Dado que el tráfico SSH está cifrado, puede utilizar SSH como capa de transporte para cualquier protocolo que no proporcione cifrado de forma predeterminada.
En este artículo, explicaré cuatro formas de usar SSH:1. cómo configurar el demonio SSH en el lado de Linux, 2. cómo configurar una conexión de consola remota, 3. cómo copiar archivos a través de la red y 4 .cómo tunelizar un determinado protocolo a través de SSH.
1. Configurar SSHD
El sistema Linux (Fedora 33 en mi caso) actúa como el servidor SSH que permite que el cliente PuTTY SSH se conecte. Primero, verifique la configuración SSH del daemon. El archivo de configuración se encuentra en /etc/ssh/sshd_config
y contiene muchos interruptores que se pueden activar comentando líneas relacionadas:
# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
Include /etc/ssh/sshd_config.d/*.conf
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
La configuración predeterminada, donde ninguna línea está sin comentar, debería funcionar para este ejemplo. Compruebe si el demonio SSH ya se está ejecutando escribiendo systemctl status sshd
:
$ systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-06-22 11:12:05 UTC; 2 years 11 months ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 577 (sshd)
Tasks: 1 (limit: 26213)
CGroup: /system.slice/sshd.service
└─577 /usr/sbin/sshd -D [email protected],chacha20-[...]
Si está inactivo, inícielo con systemctl start sshd
comando.
2. Configurar una consola remota
En Windows, descargue el instalador de PuTTY, luego instálelo y ábralo. Debería ver una ventana como esta:
En el Nombre de host (o dirección IP) campo de entrada, ingrese la información de conexión para su sistema Linux. En este ejemplo, configuré una máquina virtual Fedora 33 con un adaptador de red en puente que puedo usar para comunicarme con el sistema en la dirección IP 192.168.1.60
. Haz clic en Abrir , y debería abrirse una ventana como esta:
Este es un mecanismo de seguridad SSH para evitar un ataque de intermediario. La huella digital en el mensaje debe coincidir con la clave en el sistema Linux en /etc/ssh/ssh_host_ed25519_key.pub.
. PuTTY imprime la clave como un hash MD5. Para verificar su autenticidad, cambie al sistema Linux, abra un shell de comandos e ingrese:
ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
La salida debe coincidir con la huella digital que muestra PuTTY:
$ ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
256 MD5:E4:5F:01:05:D0:F7:DC:A6:32 no comment (ED25519)
Confirme la alerta de seguridad de PuTTY haciendo clic en Sí . La huella digital del sistema host ahora está en la lista de confianza de PuTTY, que se encuentra en el registro de Windows en:
HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys
Ingrese sus credenciales de inicio de sesión correctas y debería estar en la consola en su directorio de inicio:
3. Copie archivos a través de la red
Además de la consola remota, puede usar PuTTY para transferir archivos a través de SSH. Busque en la carpeta de instalación en C:\\Program Files (x86)\\PuTTY
y busque pscp.exe
. Puede usar esto para copiar archivos hacia y desde un sistema Linux.
Abra un símbolo del sistema con Windows + R e ingrese cmd . Copie el archivo MyFile.txt
desde su directorio de inicio de usuario de Linux a su directorio de inicio de Windows ingresando:
C:\"Program Files (x86)"\PuTTY\pscp.exe [email protected]:/home/stephan/MyFile.txt .
Para copiar un archivo del directorio de inicio de Windows al directorio de inicio del usuario de Linux, ingrese:
C:\"Program Files (x86)"\PuTTY\pscp.exe MyFile.txt [email protected]:/home/stephan/
Como ya te habrás dado cuenta, la estructura general del comando de copia es:
pscp.exe <source> <target>
4. Túnel un protocolo
Imagine que tiene una máquina Linux que ejecuta un servicio basado en HTTP para alguna aplicación arbitraria. Desea acceder a este servicio HTTP desde su máquina Windows a través de Internet. Por supuesto, no puede exponer el puerto TCP relacionado al público porque:
- El servidor ejecuta HTTP, no HTTPS
- No hay administración de usuarios ni inicio de sesión
A primera vista, parece una tarea imposible configurar esta arquitectura sin producir una horrible falla de seguridad. Pero SSH hace que sea relativamente fácil configurar una solución segura para este escenario.
Demostraré este procedimiento con mi proyecto de software Pythonic. Al ejecutarse como un contenedor, Pythonic expone dos puertos TCP:el puerto TCP 7000 (editor principal) y el puerto TCP 8000 (el editor de código fuente del servidor de código).
Para instalar Pythonic en una máquina Linux, ejecute:
podman pull pythonicautomation/pythonic
podman run -d -p 7000:7000 -p 8000:8000 pythonic
Cambie a su máquina con Windows, abra PuTTY y vaya a Conexión -> SSH -> Túneles . Agregue los dos puertos TCP que desea reenviar:
- Fuente:
7000
/ Destino:localhost:7000
- Fuente:
8000
/ Destino:localhost:8000
Luego regrese a la Sesión y establezca una conexión SSH como lo hizo antes. Abra un navegador y vaya a http://localhost:7000
; deberías ver una pantalla como esta:
¡Has configurado correctamente el reenvío de puertos!
Advertencia :si expone el puerto TCP 22 al público, no utilice credenciales de inicio de sesión fáciles de adivinar. Recibirá intentos de inicio de sesión de todo el mundo tratando de acceder a su máquina Linux con credenciales estándar comunes. En su lugar, permita que solo los clientes conocidos inicien sesión. Esta restricción de inicio de sesión se puede lograr mediante criptografía de clave pública, que utiliza un par de claves en el que la clave pública se almacena en la máquina host SSH y la clave privada permanece en el cliente.
Depuración
Si tiene dificultades para conectarse a su máquina Linux, puede seguir los procesos en su demonio SSH con:
journalctl -f -u sshd
Así es como se ve un proceso de inicio de sesión ordinario con LogLevel DEBUG:
Más información
Este artículo apenas rascó la superficie sobre las formas de usar SSH. Si está buscando información sobre un caso de uso específico, probablemente pueda encontrarla entre la gran cantidad de tutoriales de SSH en Internet. Utilizo mucho PuTTY en el trabajo porque su fácil configuración y su buena interoperabilidad entre sistemas operativos la convierten en una navaja suiza para soluciones de conectividad.