Manual de ssh
Resumen
Este manual de usuario proporciona una guía completa para instalar, configurar y utilizar OpenSSH (Secure Shell), un conjunto de herramientas que permite establecer conexiones remotas seguras entre computadoras, transferir archivos de manera segura y realizar despliegues remotos con comunicaciones cifradas. El manual está diseñado para usuarios de todos los niveles, desde principiantes hasta administradores avanzados, cubriendo todos los aspectos esenciales para operar OpenSSH en diferentes sistemas operativos.
1. Portada
Manual de Usuario de OpenSSH (Secure Shell)
Versión del Software: 9.3
Fecha de Publicación: Septiembre 2024
Sitio Web: www.openssh.org
2. Introducción
Propósito del Manual:
Este manual de usuario proporciona una guía completa para instalar, configurar y utilizar OpenSSH (Secure Shell), un conjunto de herramientas que permite establecer conexiones remotas seguras entre computadoras, transferir archivos de manera segura y realizar despliegues remotos con comunicaciones cifradas. El manual está diseñado para usuarios de todos los niveles, desde principiantes hasta administradores avanzados, cubriendo todos los aspectos esenciales para operar OpenSSH en diferentes sistemas operativos.
Alcance:
Este manual abarca la instalación y configuración inicial de OpenSSH, así como las operaciones y funciones principales que ofrece el software. También se incluyen guías para la administración de usuarios, gestión de seguridad, mantenimiento del sistema y resolución de problemas comunes.
Audiencia Objetivo:
Este manual está dirigido a administradores de sistemas, desarrolladores, ingenieros de redes y cualquier otro profesional que necesite establecer conexiones remotas seguras, transferir archivos de manera segura, o realizar administración remota en sistemas operativos como Linux, Windows, macOS, Android, e iOS.
Requisitos Previos:
Los usuarios deben tener conocimientos básicos de informática y estar familiarizados con los conceptos de redes y seguridad. Se recomienda experiencia previa en el uso de línea de comandos y administración de sistemas operativos.
3. Descripción General del Software
Resumen del Software:
OpenSSH es un conjunto de herramientas de software libre que proporciona una suite robusta para establecer conexiones seguras a través de redes no confiables. Es ampliamente utilizado para acceder de manera remota a servidores, transferir archivos, gestionar redes de manera segura y realizar despliegue remoto de aplicativos. OpenSSH implementa el protocolo SSH (Secure Shell), que ofrece una encriptación sólida para proteger los datos transmitidos contra interceptaciones y ataques.
Beneficios Clave:
-
Conexiones Remotas Seguras: Permite la administración remota de servidores de manera segura a través de redes públicas.
-
Transferencia Segura de Archivos: Facilita la transferencia de archivos utilizando el protocolo SCP (Secure Copy Protocol) o SFTP (SSH File Transfer Protocol).
-
Despliegue y Automatización Remota: Compatible con scripts y herramientas de automatización para la administración remota eficiente.
-
Compatibilidad Multiplataforma: Funciona en una amplia variedad de sistemas operativos, incluidos Linux, Windows, macOS, Android e iOS.
-
Licencia Libre: Distribuido bajo la licencia BSD, lo que permite su uso, modificación y distribución sin restricciones significativas.
Arquitectura del Sistema:
OpenSSH consta de varios componentes clave:
-
Servidor SSH (sshd): El componente del equipo que actúa como servidor permitiendo que un computador que tenga un cliente SSH pueda establecer la conexión remota segura.
-
Cliente SSH (ssh): El cliente que establece conexiones hacia servidores SSH, desde el cliente se podrán enviar comandos al equipo servidor e incluso permitirá desplegar ventanas de programas que se encuentren funcionando en el computador que actúa como servidor en la pantalla del computador que actúa como cliente.
-
Utilidades de Transferencia de Archivos (scp, sftp): Herramientas para transferir archivos de manera segura entre sistemas.
-
Utilidades de Gestión de Claves (ssh-keygen, ssh-agent, ssh-add): Herramientas para generar y gestionar claves criptográficas utilizadas para autenticación sin contraseña.
-
ssh-keygen: es una herramienta de línea de comandos incluida en el paquete OpenSSH que se utiliza para generar, gestionar y convertir claves de autenticación SSH. Su propósito principal es crear pares de claves pública y privada que se utilizan para la autenticación segura entre clientes y servidores SSH.
-
ssh-agent: es un programa de ayuda que se ejecuta en segundo plano y mantiene las claves privadas SSH en memoria. Su propósito principal es gestionar estas claves y facilitar la autenticación automática cuando se conecta a servidores SSH, sin necesidad de ingresar repetidamente la frase de contraseña (passphrase) de la clave privada cada vez que se utiliza una conexión SSH.
-
ssh-add: es una herramienta complementaria de
ssh-agent
que se utiliza para añadir claves privadas al agentessh-agent
que se está ejecutando. Cuando una clave privada es agregada conssh-add
, el usuario introduce la frase de contraseña solo una vez, y la clave se almacena de manera segura en la memoria administrada porssh-agent
.
-
4. Instalación y Configuración Inicial
Requisitos del Sistema
Antes de instalar OpenSSH, asegúrese de que su sistema cumpla con los siguientes requisitos mínimos:
-
Linux/macOS: Compatible con todas las distribuciones modernas de Linux y versiones de macOS con soporte para software de código abierto.
-
Windows: Windows 10 o superior, con soporte para la versión de OpenSSH disponible en Windows PowerShell o a través de la instalación de Windows Subsystem for Linux (WSL).
-
Android/iOS: Requiere aplicaciones de terminal que soporten SSH como Termux en Android o Blink Shell en iOS.
-
Hardware: Procesador de 32 bits o 64 bits, 1 GB de RAM, 100 MB de espacio en disco disponible para la instalación.
Procedimiento de Instalación en Linux
Asegurarse que se está trabajando como superusuario, para hacerlo se puede brindar el comando sudo
antes de cualquiera de las siguientes instrucciones o escribiendo su –
se brinda la clave de superusuario y al final del trabajo como superusuario escribir el comando exit
.
Distribuciones Basadas en Debian/Ubuntu (Usando apt-get
):
-
Actualice la lista de paquetes y luego instale el servidor y cliente OpenSSH:
apt-get update apt-get install openssh-server openssh-client
Distribuciones Basadas en Red Hat/Fedora (Usando yum
o dnf
):
-
Instale el servidor y cliente OpenSSH:
yum install openssh-server openssh-clients
-
O usando dnf (para distribuciones más nuevas como Fedora):
dnf install openssh-server openssh-clients
Distribuciones Basadas en Arch Linux (Usando pacman
):
-
Instale el paquete OpenSSH:
pacman -S openssh
Distribuciones Basadas en Mageia y Mandriva (Usando urpmi
):
-
Instale OpenSSH utilizando
urpmi
:urpmi openssh-server openssh-client
Gestión del servicio ssh en Linux
Al igual que con todos los comandos de administración, en Linux es necesario estar actuando con el rol de superusuario, tal como se explicó en el apartado anterior (Procedimiento de instalación en Linux).
-
Habilitar el servicio: Esto significa indicar a Linux que cada vez que el computador reinicie, el servicio quedará en funcionamiento automáticamente.
systemctl enable ssh
-
Deshabilitar el servicio: Esto significa el indicar que cuando el sistema reinicie, el servicio no entrará en funcionamiento a menos que se arranque manualmente.
systemctl disable ssh
-
Verificar el estado del servicio: Preguntar al sistema operativo si el servicio se encuentra en funcionamiento (running) o si está apagado.
systemctl status ssh
-
Iniciar manualmente el servicio: Poner el servicio en funcionamiento.
systemctl start sshd
-
Detener manualmente el servicio: Poner el servicio en funcionamiento.
systemctl stop sshd
-
Reiniciar manualmente el servicio: Poner el servicio en funcionamiento.
systemctl restart sshd
Instalación a través de PowerShell en Windows:
-
Abra PowerShell como Administrador.
-
Ejecute los siguientes comandos para instalar el servidor y cliente SSH:
-
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
-
Inicie y configure el servicio SSH:
-
Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic'
-
Activar el Servicio SSH en MacOS:
-
Abra la terminal y ejecute el comando para activar SSH:
-
sudo systemsetup -setremotelogin on
En Android/iOS:
-
Instalar una Aplicación de Terminal Compatible:
-
Android: Use Termux disponible en la Google Play Store.
-
iOS: Use Blink Shell disponible en la App Store.
-
-
Instalar OpenSSH en la Terminal:
-
Inicie la aplicación y utilice los comandos específicos proporcionados por la app para instalar OpenSSH.
-
Configuración Inicial
-
Generar Claves SSH (Opcional, pero Recomendado):
En su terminal, ejecute:
ssh-keygen -t rsa -b 4096
siga las instrucciones para generar un par de claves pública/privada.
-
Configurar el Archivo sshd_config:
-
En Linux o macOS, edite el archivo
/etc/ssh/sshd_config
para configurar parámetros como el puerto, autenticación basada en claves, etc. -
En Windows, el archivo de configuración se encuentra en
C:\ProgramData\ssh\sshd_config.
-
-
Reiniciar el Servicio SSH (si se realizaron cambios en la configuración):
-
En Linux/macOS:
sudo systemctl restart sshd
-
-
En powershell de Windows:
Restart-Service sshd
-
Verificar la Conectividad SSH: Desde un cliente SSH, intente conectarse al servidor utilizando:
ssh user@hostname
Asegúrese de reemplazar user
con su nombre de usuario y hostname
con la dirección IP o nombre de dominio del servidor.
5. Guía de uso
La guía de navegación describe la interfaz de usuario y los comandos básicos utilizados en OpenSSH, tanto en el servidor como en el cliente.
Interfaz de Usuario
OpenSSH es un conjunto de herramientas de línea de comandos, lo que significa que no tiene una interfaz gráfica de usuario (GUI). La interacción con OpenSSH se realiza a través de comandos ingresados en la terminal o el shell del sistema operativo. A continuación, se describen las interfaces principales:
-
Terminal de Comandos (CLI): En todos los sistemas operativos compatibles (Linux, Windows, macOS, Android, iOS), OpenSSH se ejecuta desde una terminal o línea de comandos. Los usuarios deben estar familiarizados con el uso básico del terminal para navegar, ejecutar comandos y leer salidas de texto.
-
Archivos de Configuración: OpenSSH utiliza archivos de configuración para definir parámetros de operación tanto en el servidor como en el cliente. Los archivos de configuración principales son:
-
sshd_config: Archivo de configuración del servidor SSH, generalmente ubicado en
/etc/ssh/sshd_config
en Linux y macOS, o enC:\ProgramData\ssh\sshd_config
en Windows. -
ssh_config: Archivo de configuración del cliente SSH, ubicado en
/etc/ssh/ssh_config
o~/.ssh/config
.
En caso de haber realizado cualquier cambio en los archivos de configuración es necesario reiniciar manualmente el sistema (
systemctl
restart
sshd
) para que los cambios se vean reflejados en el comportamiento del servicio. -
Paneles Principales y Comandos Básicos
OpenSSH se utiliza principalmente a través de los siguientes comandos:
-
ssh
: Conecta a un servidor remoto utilizando el protocolo SSH.ssh [usuario]@[hostname o IP]
-
scp
: Copia archivos entre hosts a través de SSH.scp [archivo origen] [usuario]@[hostname o IP]:[directorio destino]
-
sftp
: Proporciona una interfaz para transferencias de archivos seguras.sftp [usuario]@[hostname o IP]
-
ssh-keygen
: Genera, gestiona y convierte claves de autenticación para SSH.
ssh-keygen -t rsa -b 4096
-
ssh-agent
yssh-add
: Gestionan claves privadas en una sesión de shell.eval $(ssh-agent) ssh-add [ruta de la clave privada]
Menús y Submenús
Dado que OpenSSH no tiene una GUI, no existen menús o submenús tradicionales. Sin embargo, los usuarios pueden configurar diferentes opciones y parámetros mediante la modificación de los archivos de configuración mencionados anteriormente.
6. Funciones y Operaciones Principales
OpenSSH proporciona una variedad de funciones y operaciones para la administración segura de sistemas remotos. Las siguientes son las funciones y operaciones principales disponibles en OpenSSH:
1. Conexión Remota Segura con ssh
El comando ssh
permite a los usuarios conectarse de forma segura a máquinas remotas para administrar sistemas, ejecutar comandos y realizar tareas administrativas. ssh user@remote_host
.
2. Transferencia Segura de Archivos con scp
Utiliza el protocolo SSH para transferir archivos de forma segura entre un host local y uno remoto, o entre dos hosts remotos. scp file.txt user@remote_host:/path/to/destination
3. Autenticación Basada en Claves con ssh-keygen
OpenSSH permite la autenticación basada en claves para una seguridad mejorada. Esto elimina la necesidad de introducir una contraseña cada vez que se conecta a un servidor.
-
ssh-keygen -t rsa -b 4096
Genera una pareja de claves RSA pública y privada con una longitud de 4096 bits. -
ssh-copy-id user@remote_host
Añade la clave pública al archivo~/.ssh/authorized_keys
del servidor remoto para acceder a la cuenta del usuariouser
.
4. Túneles y Redirección de Puertos con ssh
OpenSSH permite el uso de túneles SSH para redirigir puertos locales o remotos a través de una conexión SSH segura.
-
ssh -L 8080:localhost:80 user@remote_host
redirige el puerto local 8080 al puerto 80 delremote_host
.
5. Ejecución de Comandos Remotos
Ejecutar comandos directamente en un servidor remoto sin abrir una sesión interactiva.
-
ssh user@remote_host "ls -la /var/www"
Lista los archivos en el directorio/var/www
del servidor remotoremote_host
.
7. Gestión de Usuarios y Seguridad
Gestión de Usuarios
OpenSSH permite la administración detallada de usuarios para el acceso remoto. Esto incluye la configuración de permisos y la autenticación de usuarios.
-
Agregar Usuarios para SSH:
-
Asegúrese de que el usuario tenga una cuenta en el servidor.
-
Añada el usuario a la configuración SSH para conceder acceso.
-
-
Autenticación basada en contraseñas vs. claves:
-
Contraseñas: Más fácil de configurar pero menos seguro.
-
Claves SSH: Más seguro, se recomienda generar pares de claves públicas/privadas.
-
Configuración del Archivo sshd_config
El archivo de configuración del servidor SSH (sshd_config
) controla muchos aspectos del comportamiento del servidor SSH, incluidas las políticas de seguridad.
-
Port 22
Defina el puerto por el cual escuchará el servicio SSH. -
AllowUsers user1 user2
Permitir Usuarios Específicos -
PasswordAuthentication no
Desactivar Autenticación por Contraseña (recomendada con autenticación por claves) -
PermitRootLogin no
Habilitar (yes) o Deshabilitar (no) el Acceso de Superusuario (Root)
Uso de Claves SSH para la Autenticación
La autenticación basada en claves es un método de autenticación más seguro que el uso de contraseñas. Implica la generación de un par de claves (pública y privada), donde la clave pública se coloca en el servidor y la clave privada se mantiene en el cliente.
Configuración de Seguridad Adicional
-
Autenticación de Dos Factores (2FA): OpenSSH puede integrarse con módulos de autenticación de dos factores, como Google Authenticator, para mejorar la seguridad.
-
Limitación de Intentos de Conexión: Utilice configuraciones de firewall y herramientas como
fail2ban
para limitar el número de intentos de conexión fallidos.Fail2ban pondrá en cuarentena las direcciones IP desde donde se detecten múltiples intentos de ingreso con clave errada en un corto periodo de tiempo, mitigando la posibilidad de ataques de fuerza bruta
Gestión de Claves SSH con ssh-agent
y ssh-add
Estos programas permiten asegurar que las claves privadas se encontrarán seguras y permite el acceso automático tras la autenticación del usuario.
8. Mantenimiento y Actualizaciones
El mantenimiento regular y la actualización de OpenSSH son esenciales para garantizar la seguridad y el rendimiento óptimo del sistema.
Actualizaciones de Seguridad
-
Mantenga OpenSSH Actualizado: Como superusuario utilice el gestor de paquetes de su distribución para comprobar y aplicar actualizaciones regularmente.
-
En Debian/Ubuntu:
apt-get update
&&
apt-get upgrade openssh-server openssh-client
-
En Red Hat/CentOS:
yum update openssh-server openssh-clients
-
En Fedora:
dnf update openssh-server openssh-clients
-
En Arch Linux:
pacman -Syu openssh
-
En Mageia:
urpmi.update -a
&& urpmi openssh
-
Copias de Seguridad y Restauración de Configuraciones
Realice copias de seguridad de los archivos de configuración antes de realizar cambios importantes:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Restauración de Configuración desde la Copia de Seguridad:
cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
3. Monitoreo del Servicio SSH
-
Verificar el Estado del Servicio SSH:
systemctl status sshd
-
Reiniciar el Servicio SSH (Después de Actualizaciones o Cambios de Configuración):
systemctl restart sshd
4. Solución de Problemas Comunes
-
Conexiones SSH Lentitud:
-
Asegúrese de que
UseDNS
esté configurado comono
en el archivosshd_config
para evitar la resolución inversa de DNS.
-
-
Problemas de Autenticación:
-
Verifique los permisos del archivo
~/.ssh/authorized_keys
y el directorio~/.ssh
:
-
-
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
5. Auditoría y Registros (Logs)
Revisar los Archivos de Registro de SSH para Actividad Sospechosa:
-
Los registros suelen encontrarse en
/var/log/auth.log
(Debian/Ubuntu) o/var/log/secure
(Red Hat/CentOS).tail -f /var/log/auth.log
6. Desinstalación de OpenSSH
Para desinstalar OpenSSH, utilice el gestor de paquetes correspondiente:
-
En Debian/Ubuntu:
apt-get remove openssh-server openssh-client
-
En Red Hat/CentOS:
yum remove openssh-server openssh-clients
-
En Fedora:
dnf remove openssh-server openssh-clients
-
En Arch Linux:
pacman -R openssh
-
En Mageia:
urpme openssh
Consideraciones al Desinstalar OpenSSH
-
Desinstalación Completa vs. Parcial: Decida si desea realizar una desinstalación completa (incluyendo archivos de configuración) o simplemente eliminar los binarios. Utilice el comando adecuado según su necesidad.
-
Impacto en la Seguridad: Asegúrese de tener un método alternativo para la administración remota si desinstala OpenSSH de un servidor, ya que perderá la capacidad de conectarse remotamente usando SSH.
-
Alternativas de Solución SSH: Considere otras soluciones SSH o métodos de acceso remoto según las necesidades de su entorno.
Licencia
Manual de ssh está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional.
Ricardo Naranjo Faccini
Desarrollador WWWNació en Barranquilla, Atl, Colombia el 14 de enero de 1971
- Magíster en Ingeniería de Sistemas y Computación de la Universidad de Los Andes 1998
- Ingeniero Civil de la Universidad de Los Andes 1995
- Diplomado en docencia en Ingeniería de la Pontificia Universidad Javeriana 2008
- Gerente de la firma Skina IT Solutions, su gestión ha llevado a la empresa al nivel de exportación de software. Experto en calidad en el desarrollo de software con énfasis en el uso de herramientas libres orientadas hacia WWW.
- CTO de AuthorsGlobe, empresa participante en el MIT 100K, elegida como parte del "TOP 10" entre 300 proyectos presentados en este concurso del Massachussets Institute of Technology MIT.
- Durante el periodo 2004-2005 se desempeñó como Gerente de desarrollo de negocios NOVELL en Nexsys de Colombia.
- Ejerce docencia como catedrático en la Universidad Javeriana, al igual que lo ha realizado en la Universidad de Los Andes, Universidad de Manizales y Universidad autónoma de Bucaramanga.
- Comprometido con la divulgación del software libre y su aplicación en Colombia, ha dictado más de 60 conferencias en todo el país, co-fundador de LinuxCol, la primera comunidad de usuarios de Linux en Colombia.
- Colaborador del grupo ACIS-Linux.