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
- Instalación: En la mayoría de las distribuciones de Linux, SSH ya está instalado por defecto. Si no está instalado, puedes instalarlo con:bash
sudo apt-get install openssh-server
- 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. - Generar Claves SSH: Para una autenticación más segura, puedes generar claves SSH en lugar de usar contraseñas. Usa el siguiente comando:bash
ssh-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.
- Mostrar la clave pública en el cliente:bash
cat ~/.ssh/id_rsa.pub
- Conectar al servidor remoto:bash
ssh usuario@servidor
- Crear el directorio .ssh en el servidor (si no existe):bash
mkdir -p ~/.ssh
- 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.
- Configurar permisos para el directorio
.ssh
:bashchmod 700 ~/.ssh
- 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
- Verificar el Estado del Servicio: Asegúrate de que el servicio SSH esté en ejecución:bash
sudo systemctl status sshd
- Iniciar el Servicio: Si no está en ejecución, inícialo con:bash
sudo systemctl start sshd
- Habilitar el Servicio al Inicio: Para que el servicio SSH se inicie automáticamente al arranque, usa:bash
sudo 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):
- 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 ysystemctl status ssh
para el servidor. - Instalar: Usa
sudo apt-get install openssh-client
para el cliente ysudo apt-get install openssh-server
para el servidor. - Configurar: Inicia y habilita el servidor SSH con
sudo systemctl start ssh
ysudo 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.