Primeira utilização
Primeira utilização
Este guia acompanha-o desde a instalação até ao seu primeiro comando SSH via SSH-Frontière.
1. Preparar uma configuração mínima
Crie um ficheiro config.toml mínimo:
[global]
log_file = "/var/log/ssh-frontiere/commands.json"
default_timeout = 60
[domains.test]
description = "Domínio de teste"
[domains.test.actions.hello]
description = "Comando de teste que apresenta uma mensagem"
level = "read"
timeout = 10
execute = "/usr/bin/echo hello from ssh-frontiere"
Esta configuração define um único domínio test com uma ação hello acessível ao nível read.
2. Instalar e configurar
Primeiro precisa de dispor do binário ssh-frontiere. Consulte o guia de compilação ou descarregue um binário pré-compilado a partir da página de releases.
# Copiar o binário
sudo cp ssh-frontiere /usr/local/bin/
sudo chmod 755 /usr/local/bin/ssh-frontiere
# Instalar a configuração
sudo mkdir -p /etc/ssh-frontiere
sudo cp config.toml /etc/ssh-frontiere/config.toml
sudo chmod 640 /etc/ssh-frontiere/config.toml
# Criar o diretório de logs
sudo mkdir -p /var/log/ssh-frontiere
# Criar a conta de serviço
sudo useradd -m -s /usr/local/bin/ssh-frontiere test-user
# Dar à conta acesso de escrita aos logs
sudo chown test-user:test-user /var/log/ssh-frontiere
3. Configurar a chave SSH
Na sua máquina cliente:
# Gerar uma chave
ssh-keygen -t ed25519 -C "test-key" -f ~/.ssh/test-frontiere
No servidor, adicione a chave pública em ~test-user/.ssh/authorized_keys:
command="/usr/local/bin/ssh-frontiere --level=read",restrict ssh-ed25519 AAAA... test-key
# Proteger as permissões
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. Primeira chamada
# Descobrir os comandos disponíveis
{ echo "help"; echo "."; } | ssh -i ~/.ssh/test-frontiere test-user@servidor
Resposta esperada (o servidor envia primeiro o banner, depois a resposta):
#> 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}
As linhas #> contêm o texto de ajuda legível. O comando help apresenta a lista dos domínios e ações acessíveis ao nível read.
5. Executar um comando
{ echo "test hello"; echo "."; } | ssh -i ~/.ssh/test-frontiere test-user@servidor
Resposta esperada:
>> hello from ssh-frontiere
>>> {"command":"test hello","status_code":0,"status_message":"executed","stdout":null,"stderr":null}
A saída do programa (hello from ssh-frontiere) é enviada em streaming via >>, depois a resposta JSON final via >>>. Os campos stdout e stderr são null no JSON porque a saída foi enviada em streaming.
6. Compreender o fluxo
Eis o que aconteceu:
- O cliente SSH liga-se com a chave
test-frontiere sshdautentica a chave e lê oauthorized_keys- A opção
command=força a execução dessh-frontiere --level=read - SSH-Frontière apresenta o banner (
#>,+>) e aguarda os cabeçalhos - O cliente envia o comando
test hello(texto simples, sem prefixo) depois.(fim de bloco) - SSH-Frontière valida: domínio
test, açãohello, nívelread<=readexigido - SSH-Frontière executa
/usr/bin/echo hello from ssh-frontiere - A saída é enviada em streaming (
>>), depois a resposta JSON final (>>>)
7. Testar uma rejeição
Tente um comando que não existe:
{ echo "test inexistente"; echo "."; } | ssh -i ~/.ssh/test-frontiere test-user@servidor
Resposta:
>>> {"command":"test inexistente","status_code":128,"status_message":"rejected: unknown action 'inexistente' in domain 'test'","stdout":null,"stderr":null}
stdout e stderr são null porque o comando não foi executado.
Próximo passo
Agora que SSH-Frontière funciona, pode configurar os seus próprios domínios e ações.