Primer uso
Primer uso
Esta guia le acompana desde la instalacion hasta su primer comando SSH a traves de SSH-Frontière.
1. Preparar una configuracion minima
Cree un archivo config.toml minimo:
[global]
log_file = "/var/log/ssh-frontiere/commands.json"
default_timeout = 60
[domains.test]
description = "Dominio de prueba"
[domains.test.actions.hello]
description = "Comando de prueba que muestra un mensaje"
level = "read"
timeout = 10
execute = "/usr/bin/echo hello from ssh-frontiere"
Esta configuracion define un unico dominio test con una accion hello accesible al nivel read.
2. Instalar y configurar
Primero debe disponer del binario ssh-frontiere. Consulte la guia de compilacion o descargue un binario precompilado desde la pagina de releases.
# Copiar el binario
sudo cp ssh-frontiere /usr/local/bin/
sudo chmod 755 /usr/local/bin/ssh-frontiere
# Instalar la configuracion
sudo mkdir -p /etc/ssh-frontiere
sudo cp config.toml /etc/ssh-frontiere/config.toml
sudo chmod 640 /etc/ssh-frontiere/config.toml
# Crear el directorio de logs
sudo mkdir -p /var/log/ssh-frontiere
# Crear la cuenta de servicio
sudo useradd -m -s /usr/local/bin/ssh-frontiere test-user
# Dar acceso de escritura a los logs a la cuenta
sudo chown test-user:test-user /var/log/ssh-frontiere
3. Configurar la clave SSH
En su maquina cliente:
# Generar una clave
ssh-keygen -t ed25519 -C "test-key" -f ~/.ssh/test-frontiere
En el servidor, anade la clave publica en ~test-user/.ssh/authorized_keys:
command="/usr/local/bin/ssh-frontiere --level=read",restrict ssh-ed25519 AAAA... test-key
# Asegurar los permisos
sudo chmod 700 ~test-user/.ssh
sudo chmod 600 ~test-user/.ssh/authorized_keys
sudo chown -R test-user:test-user ~test-user/.ssh
4. Primera llamada
# Descubrir los comandos disponibles
{ echo "help"; echo "."; } | ssh -i ~/.ssh/test-frontiere test-user@servidor
Respuesta esperada (el servidor envia primero el banner, luego la respuesta):
#> ssh-frontiere 0.1.0
+> capabilities session, help, body
#> type "help" for available commands
#> ...
>>> {"command":"help","status_code":0,"status_message":"ok","stdout":null,"stderr":null}
Las lineas #> contienen el texto de ayuda legible. El comando help muestra la lista de dominios y acciones accesibles al nivel read.
5. Ejecutar un comando
{ echo "test hello"; echo "."; } | ssh -i ~/.ssh/test-frontiere test-user@servidor
Respuesta esperada:
>> hello from ssh-frontiere
>>> {"command":"test hello","status_code":0,"status_message":"executed","stdout":null,"stderr":null}
La salida del programa (hello from ssh-frontiere) se envia en streaming via >>, luego la respuesta JSON final via >>>. Los campos stdout y stderr son null en el JSON porque la salida fue enviada en streaming.
6. Comprender el flujo
Esto es lo que ha ocurrido:
- El cliente SSH se conecta con la clave
test-frontiere sshdautentica la clave y leeauthorized_keys- La opcion
command=fuerza la ejecucion dessh-frontiere --level=read - SSH-Frontière muestra el banner (
#>,+>) y espera las cabeceras - El cliente envia el comando
test hello(texto plano, sin prefijo) y luego.(fin de bloque) - SSH-Frontière valida: dominio
test, accionhello, nivelread<=readrequerido - SSH-Frontière ejecuta
/usr/bin/echo hello from ssh-frontiere - La salida se envia en streaming (
>>), luego la respuesta JSON final (>>>)
7. Probar un rechazo
Intente un comando que no existe:
{ echo "test inexistente"; echo "."; } | ssh -i ~/.ssh/test-frontiere test-user@servidor
Respuesta:
>>> {"command":"test inexistente","status_code":128,"status_message":"rejected: unknown action 'inexistente' in domain 'test'","stdout":null,"stderr":null}
stdout y stderr son null porque el comando no fue ejecutado.
Siguiente paso
Ahora que SSH-Frontière funciona, puede configurar sus propios dominios y acciones.