Ir al contenido

SSH: Conceptos Básicos

SSH - es el protocolo y herramienta principal para la administración remota de servidores. También permite crear túneles y transferir archivos.

  • sshd (OpenSSH Daemon): Un demonio del lado del servidor que escucha conexiones SSH entrantes. Autentica a los usuarios y establece sesiones seguras.
  • sftp-server (subsistema de servidor SFTP): Un programa para transferencias de archivos usando el protocolo SFTP, normalmente invocado automáticamente por el demonio sshd.
  • ssh (cliente SSH): Inicia sesión en un servidor remoto, proporciona un terminal virtual y ejecuta comandos.
  • ssh-keygen: Crea y administra claves de autenticación.
  • scp: Copia archivos entre máquinas locales y remotas usando un canal cifrado.
  • sftp: Transfiere archivos a través de un canal seguro, similar a FTP.
Ventana de terminal
ssh root@example.com

Conectar al servidor con un puerto personalizado:

Ventana de terminal
ssh -p 2222 root@example.com

Conectar al servidor con una clave privada específica:

ssh -i ~/.ssh/server_ed25519 root@example.com

El cliente SSH puede funcionar sin un archivo de configuración y obtener todos los parámetros necesarios desde los argumentos de la línea de comandos. Sin embargo, puedes crear un archivo de configuración llamado ~/.ssh/config. Este archivo debe contener la siguiente información:

Host example.com
HostName 192.168.1.1
User root
Port 2222
IdentityFile ~/.ssh/server_ed25519
  • Host: nombre del servidor. Este es el nombre que se usa en el comando de conexión: ssh example.com
  • HostName: dirección opcional del servidor. Si no se define HostName, la dirección o nombre de host adecuado debe definirse en Host
  • User: nombre de usuario
  • Port: puerto del servidor. Por defecto: 22
  • IdentityFile: campo opcional que especifica la ruta completa al archivo de clave privada

Las claves SSH son una forma más segura de iniciar sesión en un servidor SSH, en comparación con el uso de contraseñas. Consisten en un par de claves: una clave pública y una clave privada. La clave pública se coloca en el servidor al que deseas conectarte, mientras que la clave privada permanece en tu máquina local.

Para generar un par de claves SSH, utiliza el siguiente comando:

Ventana de terminal
ssh-keygen -t ed25519 -f ~/.ssh/server_ed25519
  • ed25519 - selecciona el tipo de cifrado. Ed25519 es la opción óptima
  • ~/.ssh/server_ed25519 - la ruta al archivo de clave privada. La clave pública se generará como ~/.ssh/server_ed25519.pub

Una vez que se inicie el comando, te pedirá que ingreses una contraseña. Esta contraseña proporciona un nivel adicional de seguridad y debe ser ingresada al conectarse al servidor.

La clave pública es una sola línea con el siguiente formato:

ssh-ed25519 AAAA...UUUU user@example.com

En el servidor, agrega esta línea al archivo ~/.ssh/authorized_keys. Este archivo puede contener una o más claves. Para agregar la clave pública, ejecuta el siguiente comando:

Ventana de terminal
echo "ssh-ed25519 AAAA...UUUU user@example.com" >>~/.ssh/authorized_keys

El reenvío de agente SSH te permite usar tus claves SSH locales en un servidor remoto sin compartirlas. Esto es útil cuando necesitas acceder a otro servidor desde el primer servidor sin almacenar tus claves en el servidor remoto.

Puedes habilitar el reenvío de agente SSH usando la opción -A con el comando ssh:

Ventana de terminal
ssh -A example.com

Alternativamente, puedes habilitarlo permanentemente para un host específico en tu archivo de configuración SSH ~/.ssh/config:

Host example.com
ForwardAgent yes