Pesquisa de site

GoTTY - Compartilhe seu terminal Linux (TTY) como um aplicativo da web


GoTTY é uma ferramenta simples de linha de comando baseada em GoLang que permite compartilhar seu terminal (TTY) como um aplicativo da web. Ele transforma ferramentas de linha de comando em aplicativos da web.

Ele emprega o emulador de terminal do Chrome OS (hterm) para executar um terminal baseado em JavaScript em navegadores da web. E o mais importante, GoTTY executa um servidor de soquete web que basicamente transfere a saída do TTY para os clientes e recebe a entrada dos clientes (ou seja, se a entrada dos clientes for permitida) e a encaminha para o TTY.

Leia também: Teleconsole – Compartilhe seu terminal Linux com seus amigos

Sua arquitetura (ideia hterm + web socket) foi inspirada no programa Wetty que habilita terminal sobre HTTP e HTTPS.

Pré-requisitos:

Você deve ter o ambiente GoLang (Go Programming Language) instalado no Linux para executar o GoTTY.

Como instalar GoTTY em sistemas Linux

Se você já possui um ambiente GoLang funcional, execute o comando go get abaixo para instalá-lo:

go get github.com/yudai/gotty

O comando acima irá instalar o binário GoTTY na sua variável de ambiente GOBIN, tente verificar se é esse o caso:

ls $GOPATH/bin/

Como usar GoTTY no Linux

Para executá-lo, você pode usar a variável GOBIN env e o recurso de preenchimento automático de comando da seguinte maneira:

$GOBIN/gotty

Caso contrário, execute GoTTY ou qualquer outro programa Go sem digitar o caminho completo para o binário, adicione sua variável GOBIN a PATH no arquivo ~/.profile usando o comando export abaixo :

export PATH="$PATH:$GOBIN"

Salve o arquivo e feche-o. Em seguida, forneça o arquivo para efetuar as alterações acima:

source ~/.profile

A sintaxe geral para executar comandos GoTTY é:

Usage: gotty [options] <Linux command here> [<arguments...>]

Agora execute GoTTY com qualquer comando, como o comando df para visualizar o espaço e o uso das partições do disco do sistema no navegador da web:

gotty df -h

GoTTY iniciará um servidor web na porta 8080 por padrão. Em seguida, abra a URL: http://127.0.0.1:8080/ em seu navegador e você verá o comando em execução como se estivesse sendo executado em seu terminal:

Como personalizar GoTTY no Linux

Você pode alterar as opções padrão e seu terminal (hterm) no arquivo de perfil ~/.gotty, ele carregará este arquivo por padrão caso ele exista.

Este é o principal arquivo de customização lido pelos comandos gotty, portanto, crie-o da seguinte forma:

touch ~/.gotty

E defina seus próprios valores válidos para as opções de configuração (encontre todas as opções de configuração aqui) para personalizar o GoTTY, por exemplo:

// Listen at port 9000 by default
port = "9000"

// Enable TSL/SSL by default
enable_tls = true

// hterm preferences
// Smaller font and a little bit bluer background color
preferences {
    font_size = 5,
    background_color = "rgb(16, 16, 32)"
}

Você pode definir seu próprio arquivo index.html usando a opção --index na linha de comando:

gotty --index /path/to/index.html uptime

Como usar recursos de segurança no GoTTY

Como o GoTTY não oferece segurança confiável por padrão, você precisa usar manualmente alguns recursos de segurança explicados abaixo.

Permitir que os clientes executem comandos/digitem entradas no terminal

Observe que, por padrão, o GoTTY não permite que os clientes digitem entradas no TTY, apenas permite o redimensionamento da janela.

No entanto, você pode usar a opção -w ou --permit-write para permitir que os clientes gravem no TTY, o que não é recomendado devido a ameaças à segurança do servidor.

O comando a seguir usará o editor de linha de comando vi para abrir o arquivo fossmint.txt para edição no navegador da web:

gotty -w vi fossmint.txt

Abaixo está a interface do vi vista no navegador da web (use os comandos do vi aqui como de costume):

Use GoTTY com autenticação básica (nome de usuário e senha)

Tente ativar um mecanismo básico de autenticação, onde os clientes serão solicitados a inserir o nome de usuário e a senha especificados para se conectar ao servidor GoTTY.

O comando abaixo restringirá o acesso do cliente usando a opção -c para solicitar credenciais específicas aos usuários (nome de usuário: test e senha: @67890):

gotty -w -p "9000" -c "test:@67890" glances

Gotty gera URL aleatório

Outra forma de restringir o acesso ao servidor é usando a opção -r. Aqui, GoTTY irá gerar um URL aleatório para que apenas usuários que conheçam o URL possam obter acesso ao servidor.

Use também a opção –title-format “GoTTY – {{ .Command }} ({{ .Hostname }})” para definir o título da interface do navegador da web e o comando Glances é usado para mostrar estatísticas de monitoramento do sistema :

gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

O seguinte é o resultado do comando acima, visto na interface do navegador da web:

Use GoTTY com SSL/TLS

Como por padrão todas as conexões entre o servidor e os clientes não são criptografadas, ao enviar informações secretas através do GoTTY, como credenciais de usuário ou qualquer outra informação, você deve usar o -t ou - Opção -tls que habilita TLS/SSL na sessão:

Por padrão, GoTTY lerá o arquivo de certificado ~/.gotty.crt e o arquivo de chave ~/.gotty.key, portanto, comece criando também uma certificação autoassinada como arquivo-chave usando o comando openssl abaixo (responda à pergunta feita para gerar o certificado e os arquivos-chave):

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt

Em seguida, use GoTTY de forma segura com SSL/TLS habilitado da seguinte forma:

gotty -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

Compartilhe seu terminal com vários clientes

Você pode usar multiplexadores de terminal para compartilhar um único processo com vários clientes. O comando a seguir iniciará uma nova sessão tmux chamada gotty com o comando Glances (certifique-se de ter o tmux instalado):

gotty tmux new -A -s gotty glances 

Para ler um arquivo de configuração diferente, use a opção –config “/path/to/file” assim:

gotty -tr --config "~/gotty_new_config" --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

Para exibir a versão do GoTTY, execute o comando:

gotty -v 

Visite o repositório GoTTY GitHub para encontrar mais exemplos de uso: https://github.com/yudai/gotty

Isso é tudo! Voce já experimentou? Como você encontra o GoTTY? Compartilhe suas idéias conosco por meio do formulário de feedback abaixo.