[bitwarden-ssh-intro.webp]

He estado usando Bitwarden como mi gestor de contraseñas durante un par de años ya que es confiable, de código abierto, fácil de usar en múltiples dispositivos y seguro.

Ahora, recientemente descubrí que Bitwarden agregó una funcionalidad de agente SSH y quería probarlo. Este post recorre la configuración y uso del agente SSH de Bitwarden en Linux.



¿Por Qué Usar Bitwarden como Agente SSH?

Podrías estar preguntándote ¿por qué usar Bitwarden para SSH cuando la gestión tradicional de claves SSH funciona bien?

Bueno, tener tus claves SSH en la misma bóveda segura que tus contraseñas significa que todo está cifrado, respaldado y sincronizado entre dispositivos automáticamente.

Segundo, Bitwarden puede solicitarte autorización antes de permitir una conexión SSH, agregando una capa extra de seguridad más allá de un simple archivo de clave protegido con contraseña.

Finalmente, si ya usas Bitwarden en múltiples máquinas, esto centraliza la gestión de tus claves en un servicio que ya usas, lo cual es bastante bueno la verdad.



Cómo Funciona el Agente SSH de Bitwarden

El agente SSH de Bitwarden consiste en 3 componentes principales:

  • Aplicación de Escritorio de Bitwarden: Actúa como el agente SSH y almacena tus claves.
  • Socket del Agente SSH: Socket de dominio Unix que maneja la comunicación entre clientes SSH y Bitwarden.
  • Servidores SSH Remotos: Sistemas objetivo configurados para autenticación de clave pública.

Cuando intentas una conexión SSH, el cliente SSH se comunica con Bitwarden a través del socket. Bitwarden puede solicitarte autorización (dependiendo de tu configuración), y proporciona la clave privada para completar la autenticación.



Configurando el Cliente

Instalar Bitwarden Desktop

Puedes instalar Bitwarden desde un Flatpak o compilarlo desde el código fuente. Yo opté por la versión Flatpak:

# Instalar desde Flathub
flatpak install flathub com.bitwarden.desktop

Para otros métodos de instalación, consulta la documentación oficial.


Habilitar el Agente SSH

Una vez instalado, necesitas habilitar la función de agente SSH:

  1. Abre la aplicación de escritorio de Bitwarden
  2. Navega a File → Settings
  3. Marca la opción Enable SSH-Agent

[bitwarden-enable-ssh-agent.webp]


Configurar el Socket del Agente SSH

El cliente SSH necesita saber dónde encontrar el socket del agente SSH de Bitwarden. Primero, localiza el archivo de socket:

# Encontrar la ubicación del socket de Bitwarden
find / -name "*bitwarden*" -type s 2>/dev/null

# Método alternativo usando ss
ss -xl | grep bitwarden

Para una instalación Flatpak, el socket típicamente se encuentra en:

/home/<nombre_usuario>/.var/app/com.bitwarden.desktop/data/.bitwarden-ssh-agent.sock

Configura la variable de entorno SSH_AUTH_SOCK para que apunte a este socket:

# Sintaxis
export SSH_AUTH_SOCK=<ruta_socket_bitwarden>

# Para el usuario actual "userx"
export SSH_AUTH_SOCK=/home/userx/.var/app/com.bitwarden.desktop/data/.bitwarden-ssh-agent.sock

# Verificar que el socket sea accesible
echo $SSH_AUTH_SOCK && test -S "$SSH_AUTH_SOCK" && echo "Socket accessible" || echo "Socket unavailable"

Para hacer esto persistente a través de reinicios, agrega el comando export a tu ~/.bashrc (o mejor aún, a ~/.bashrc.d/):

# Agregar a ~/.bashrc
echo 'export SSH_AUTH_SOCK=/home/userx/.var/app/com.bitwarden.desktop/data/.bitwarden-ssh-agent.sock' >> ~/.bashrc

# Recargar tu configuración de shell
source ~/.bashrc

También, puedes configurar esto a través de systemd si lo prefieres de esa manera.



Configurando el Servidor

Habilitar Autenticación de Clave Pública

Edita /etc/ssh/sshd_config en el servidor remoto para asegurar que SSH esté configurado para aceptar autenticación basada en claves.

# Contenido de "/etc/ssh/sshd_config"
# Habilitar autenticación de clave pública
PubkeyAuthentication yes

# Especificar dónde se almacenan las claves autorizadas
AuthorizedKeysFile .ssh/authorized_keys

# Opcionalmente deshabilitar autenticación por contraseña para mejor seguridad
PasswordAuthentication no

# Requerir autenticación de clave pública
AuthenticationMethods publickey

Reinicia el servicio SSH para aplicar los cambios:

sudo systemctl restart sshd.service

Agregar Tu Clave Pública

Ahora necesitas agregar tu clave pública SSH de Bitwarden al archivo ~/.ssh/authorized_keys del servidor remoto.

Primero, crea tu clave SSH en Bitwarden (ver siguiente sección), luego copia la clave pública al servidor:

# Crear el archivo authorized_keys si no existe
mkdir -p ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys

# Agregar tu clave pública (una por línea)
# Ejemplo:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDNYy0VLWLYvL4PVd4y1TmG bitwarden-key

# Establecer los permisos apropiados
chmod 600 ~/.ssh/authorized_keys


Trabajando con Claves SSH en Bitwarden

Crear un Par de Claves SSH

Genera tus claves SSH directamente dentro de la aplicación de escritorio de Bitwarden (documentación oficial):

  1. Abre la aplicación de escritorio de Bitwarden.
  2. Ve a My vault → SSH key (en el menú izquierdo).
  3. Haz clic en Add item (+ icon) → SSH key.
  4. Configura los ajustes de tu clave y genera.

[bitwarden-create-ssh-key.webp]


Verificar que las Claves SSH Estén Cargadas

Con tu bóveda de Bitwarden desbloqueada, puedes listar todas las claves SSH disponibles:

# Listar claves públicas del agente SSH de Bitwarden
ssh-add -L

# Ejemplo de salida:
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDNYy04y1TmG my-server-key

Conectar a Servidores SSH Remotos

Una vez que todo esté configurado, conectarse es sencillo.

  • Esto funciona solo cuando te conectas a máquinas remotas (servidores) que tienen su archivo ~/.ssh/authorized_keys con una entrada con la clave pública SSH creada en Bitwarden.
  • -A: Habilitar el reenvío del agente SSH a la conexión. Para usar la clave SSH en conexiones posteriores.
# Conexión SSH básica
ssh [email protected]

# Con reenvío de agente habilitado
ssh -A [email protected]

Si has configurado Bitwarden para solicitar autorización, verás una notificación de la aplicación de escritorio cuando una conexión SSH intente usar tus claves.



Reflexiones Finales

Después de usar el agente SSH de Bitwarden durante un par de días, puedo decir que funciona bien, es fácil de configurar y es amigable para el usuario. Sin embargo, no me gusta la dependencia de la aplicación de escritorio, ¿por qué no puedo simplemente usar el CLI o algo menos pesado?

Aprecio al equipo de Bitwarden por la función y es una buena sin duda. Estaré atento a futuras actualizaciones ya que proporcionan una gran solución y son un equipo confiable :).