Servicio SSH

El servicio SSH (Secure Shell) es una herramienta esencial para administrar servidores y transferir archivos de forma segura en entornos Linux. Aquí te explico cómo usarlo, configurarlo y obtener acceso:

¿Qué es SSH?

SSH es un protocolo que permite iniciar sesión de forma segura en sistemas remotos. Es la forma más común de acceder a servidores Linux remotos2.

Uso Básico de SSH

Para conectarte a un sistema remoto mediante SSH, usa el siguiente comando en la terminal:

bash

ssh usuario@servidor

Donde usuario es tu nombre de usuario en el sistema remoto y servidor es la dirección IP o el nombre de dominio del servidor.

Configuración de SSH

  1. Instalación: En la mayoría de las distribuciones de Linux, SSH ya está instalado por defecto. Si no está instalado, puedes instalarlo con:bashsudo apt-get install openssh-server
  2. Configuración: El archivo de configuración principal de SSH se encuentra en /etc/ssh/sshd_config. Puedes abrirlo con un editor de texto como nano:bashsudo nano /etc/ssh/sshd_config Aquí puedes ajustar varias configuraciones, como el puerto (por defecto es el 22) y las opciones de autenticación.
  3. Generar Claves SSH: Para una autenticación más segura, puedes generar claves SSH en lugar de usar contraseñas. Usa el siguiente comando:bashssh-keygen Luego, copia la clave pública al servidor remoto:bashssh-copy-id usuario@servidor

Si prefieres hacerlo manualmente sin usar ssh-copy-id, aquí tienes los pasos:

Paso 1: Generar las claves SSH en el cliente

Primero, debes generar las claves SSH en tu máquina cliente (local). Ejecuta este comando en la terminal:

ssh-keygen

Sigue las instrucciones en pantalla. Esto creará dos archivos:

  • ~/.ssh/id_rsa (clave privada)
  • ~/.ssh/id_rsa.pub (clave pública)

Paso 2: Copiar la clave pública al servidor

Tienes que copiar manualmente el contenido de tu clave pública (~/.ssh/id_rsa.pub) al archivo ~/.ssh/authorized_keys del servidor remoto.

  1. Mostrar la clave pública en el cliente:bashcat ~/.ssh/id_rsa.pub
  2. Conectar al servidor remoto:bashssh usuario@servidor
  3. Crear el directorio .ssh en el servidor (si no existe):bashmkdir -p ~/.ssh
  4. Copiar la clave pública al archivo authorized_keys: Una forma sencilla es usar un editor de texto en el servidor (como nano o vi) para abrir/crear el archivo ~/.ssh/authorized_keys y pegar el contenido de tu clave pública:bashnano ~/.ssh/authorized_keys Pega la clave pública y guarda el archivo.

Paso 3: Establecer los permisos adecuados

Es importante asegurarse de que los permisos del directorio y archivos SSH sean correctos para que SSH los acepte.

  1. Configurar permisos para el directorio .ssh:bashchmod 700 ~/.ssh
  2. Configurar permisos para el archivo authorized_keys:bashchmod 600 ~/.ssh/authorized_keys

Paso 4: Conectar usando la clave SSH

Finalmente, cierra sesión en el servidor remoto y conéctate nuevamente desde tu cliente usando SSH:

bash

ssh usuario@servidor

Si todo está configurado correctamente, deberías poder iniciar sesión en el servidor remoto sin necesidad de ingresar una contraseña.

Obtener Acceso SSH

  1. Verificar el Estado del Servicio: Asegúrate de que el servicio SSH esté en ejecución:bashsudo systemctl status sshd
  2. Iniciar el Servicio: Si no está en ejecución, inícialo con:bashsudo systemctl start sshd
  3. Habilitar el Servicio al Inicio: Para que el servicio SSH se inicie automáticamente al arranque, usa:bashsudo systemctl enable sshd

Seguridad Adicional

  • Limitar el Acceso: Puedes restringir el acceso SSH a ciertos usuarios o direcciones IP en el archivo de configuración sshd_config.
  • Actualizar Regularmente: Mantén tu sistema y el paquete SSH actualizados para asegurar que estás protegido contra vulnerabilidades conocidas.

Servicio SSH como Cliente vs Servidor

En Linux, SSH (Secure Shell) se utiliza tanto como cliente como servidor, pero desempeñan roles diferentes. Vamos a ver en qué consisten y cómo se diferencian:

SSH Cliente

El SSH cliente es el software que utilizas para conectarte a un servidor SSH. Cuando te conectas a un servidor remoto, usas el cliente SSH para establecer esa conexión de manera segura. La mayoría de las distribuciones de Linux vienen con un cliente SSH preinstalado, llamado ssh.

Ejemplo de uso del cliente SSH:

ssh usuario@direccion_ip

En este comando, usuario es el nombre de usuario en el servidor remoto y direccion_ip es la dirección IP o el nombre del dominio del servidor al que te conectas.

SSH Servidor

El SSH servidor es el software que escucha en el puerto 22 (por defecto) y acepta conexiones entrantes desde los clientes SSH. El servidor SSH maneja las autenticaciones de los usuarios y proporciona un entorno seguro donde los usuarios pueden ejecutar comandos, transferir archivos, y más. En Linux, uno de los servidores SSH más comunes es OpenSSH.

Ejemplo de configuración básica del servidor SSH (OpenSSH):

  1. Instalar OpenSSH Server (si no está ya instalado):
sudo apt-get install openssh-server

2. Iniciar el servicio SSH:

sudo systemctl start ssh

3. Habilitar el servicio SSH para que arranque al inicio:

sudo systemctl enable ssh

Resumen de diferencias:

  • SSH Cliente:
    • Se utiliza para iniciar una conexión segura a un servidor remoto.
    • Se conecta a través del puerto 22 (por defecto).
    • Ejemplo: ssh usuario@direccion_ip
  • SSH Servidor:
    • Escucha las conexiones entrantes y permite a los usuarios conectarse de manera segura.
    • Se ejecuta en el servidor y maneja las autenticaciones y sesiones.
    • Comandos de gestión: sudo systemctl start ssh, sudo systemctl enable ssh.

En resumen, el cliente SSH es lo que utilizas en tu máquina local para conectarte a un servidor remoto, mientras que el servidor SSH es lo que ejecutas en la máquina remota para permitir esas conexiones.

Un mismo ordenador Linux puede funcionar como cliente y servidor SSH al mismo tiempo. Vamos a abordar cómo verificar si tu sistema tiene ambas funciones instaladas y cómo configurar ambas.

Verificar si Linux tiene SSH como servidor y cliente

Cliente SSH:

El cliente SSH (ssh) suele estar preinstalado en la mayoría de las distribuciones de Linux. Puedes verificar si está instalado ejecutando el siguiente comando:

ssh -V

Si está instalado, verás algo como:

OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f  31 Mar 2020

Servidor SSH:

Para verificar si el servidor SSH (OpenSSH Server) está instalado y funcionando, puedes usar el siguiente comando:

systemctl status ssh

Si el servidor SSH está instalado, verás algo como:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-09-14 12:34:56 UTC; 3 weeks 4 days ago

Instalar SSH como cliente y servidor

Cliente SSH:

Si por alguna razón el cliente SSH no está instalado, puedes instalarlo utilizando el siguiente comando:

sudo apt-get install openssh-client

Servidor SSH:

Para instalar el servidor SSH (OpenSSH Server), usa el siguiente comando:

sudo apt-get install openssh-server

Configurar SSH como servidor y cliente

Iniciar y habilitar el servidor SSH:

Después de instalar el servidor SSH, necesitas iniciarlo y configurarlo para que arranque al inicio:

sudo systemctl start ssh
sudo systemctl enable ssh

Conectar a otros servidores (Cliente SSH):

Puedes utilizar el cliente SSH para conectarte a otros servidores remotos usando el siguiente comando:

ssh usuario@direccion_ip

Resumen

  • Verificar: Usa ssh -V para el cliente y systemctl status ssh para el servidor.
  • Instalar: Usa sudo apt-get install openssh-client para el cliente y sudo apt-get install openssh-server para el servidor.
  • Configurar: Inicia y habilita el servidor SSH con sudo systemctl start ssh y sudo systemctl enable ssh.

Con estos pasos, tu ordenador Linux podrá funcionar como cliente y servidor SSH simultáneamente, permitiéndote tanto conectarte a otros servidores como aceptar conexiones entrantes de SSH.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *