apt install openssh-server
Instalación de únicamente el servidor
apt install ssh
instalación de cliente y servidor, los dos.
/etc/ssh/sshd_config
Fichero de configuración del servidor.
sshd → daemon (programa que se ejecuta en segundo plano ofreciendo un servicio). Por eso la D la lleva el servidor.
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
La capacidad de securización del canal de SSH se basa en que se han generado claves públicas y privadas, claves RSA.
~/.ssh/id_rsa → clave privada.
~/.ssh/id_rsa.pub → clave pública.
/etc/ssh/ssh_config
Fichero de configuración del cliente.
~/.ssh/known_hosts
Fichero con fingerprints de la claves publicas de los servidores a los que nos hemos conectado. Servidor central. Ahí se guardan las huellas/fingerprints de cada servidor SSH al que te conectas por primera vez, para que SSH pueda comprobar en futuras conexiones que sigues hablando con el mismo servidor y nadie lo está suplantando.
~/.ssh/authorized_keys
Fichero con claves publicas de los clientes autorizados a conectarse. Está en el servidor a administrar.
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_ecdsa_key
Contienen las claves privadas del servidor SSH. Se utilizan para la autenticación del host ante los clientes SSH y corresponden a distintos algoritmos: RSA, DSA y ECDSA.
📝 Nota importante
Por cada fichero .key hay también uno .pub (ej: ssh_host_rsa_key.pub), que es la clave pública enviada a los clientes para la verificación del servidor.
ssh-keygen -t rsa/dsa/ecdsa -b numero_bits_clave
Generación de par de claves (pública y privada) usando distintos algoritmos.
ssh-keygen es la herramienta de Linux para generar, gestionar y convertir pares de claves SSH.
-t: type. Especifica el algoritmo que se va a usar par ala clave (rsa, dsa, ecdsa, etc).
-b: bits. Longitud de la clave en bits. Define el tamaño de la clave, lo que determina la seguridad (RSA de 20248 o 4096 bits por ejemplo).
ssh-keygen -l -f ssh_host_ecdsa_key.pub
Muestra el fingerprint de esa clave. Se usa para ver el fingerprint de una clave pública SSH.
-l: listar información de la clave (fingerprint y tamaño).
-f: file. Indica el fichero que contiene la clave que queremos inspeccionar.
ssh-agent
ssh-agent es un agente de autenticación para SSH. Sirve para almacenar las claves privadas en memoria de forma segura mientras dura la sesión.
Beneficio: no tienes que escribir la passphrase cada vez que te conectas a un servidor mediante SSH.
ssh-add
Añadir claves privadas al agente de autenticación SSH (ssh-agent).
Beneficio: Una vez añadidas, no hace falta introducir la passphrase cada vez que uses la clave para conectarte a un servidor SSH.
ssh-keyscan
Es una herramienta que sirve para recopilar las claves públicas de uno o varios hosts SSH sin necesidad de conectarse a ellos mediante SSH.
Su función principal es obtener el contenido que luego va al fichero known_hosts, es decir, las claves públicas de los servidores para verificar su identidad.
ssh username@remote_host
Conectar al host remoto e iniciar una sesión interactiva (terminal remota).
Si ya tienes tu clave pública registrada en ~/.ssh/authorized_keys del host remoto → la conexión se autentica automáticamente.
Si no tienes la clave pública registrada → SSH pedirá la contraseña del usuario remoto.
ssh -l username remote_host
Conectar al host e iniciar una sesión interactiva remotamente.
-l: login → “usuario”. Especificar el nombre de usuario remoto al que quieres conectarte en el host.
ssh username@remote_host comando
Ejecutar un comando remotamente.
ssh -p puerto username@remote_host comando
Conectar a un puerto diferente al 22.
ssh -A
Estando conectado a un servidor si quieres conectarte a otro, esta opción transmite las credenciales de tu ssh-agent a un servidor remoto. Así puedes hacer SSH a otros hosts usando tu clave privada local, sin copiarla al servidor intermedio.
-A: Agent forwarding “Reenviar el agente”.
Significado: Agent forwarding → “reenviar el agente”
ssh -L your_port:site_or_IP_to_access:site_port username@host
-L: local. Túnel local. Crea un túnel SSH desde un puerto local hacia un host/puerto remoto, pasando por la conexión SSH.
El puerto local envía tráfico seguro al puerto remoto pasando por el SSH.
Permite redirigir tráfico de tu máquina local hacia otro host remoto de forma segura.
Crea un tunel local. Creas el ssh en tu máquina conectándote a servicios al puerto your_port y se redirigirá al puerto site_port. Hacemos túneles para ocultar servicios. Creas un canal seguro para acceder a otros servicios.
ssh -R remote_port:site_or_IP_to_access:site_port username@host
Crea un tunel remoto. El puerto remote_port es de otra máquina y nos redirigirá al puerto site_port
-R: Remote.
SFTP…
Copia remota similar a SCP. Ambos sirven para copiar ficheros entre máquina local y remota.
Funcionan sobre SSH y con el puerto 22 por defecto.
ssh-copy-id
ssh-copy-id copia tu clave pública al fichero authorized_keys del servidor remoto, permitiendo autenticación SSH sin contraseña con la clave privada correspondiente.
ssh-copy-id username@remote_host
Copia la clave pública del usuario local al fichero authorized_keys del usuario remoto, permitiendo autenticación SSH sin contraseña.