Guia do usuário Sessões salvas

Sessões salvas

Confirmações e perguntas (excluir sessões, pastas, túneis e macros, dar nome a uma nova pasta, as ações do SFTP) abrem nas caixas de diálogo do próprio PlexusTerm: Enter envia um nome digitado e pressiona o botão em foco de uma confirmação, Esc cancela, e Cancelar fica com o foco quando a ação exclui algo. Cancelar nunca executa a ação.

O painel Sessões salvas à esquerda guarda sessões SSH, seriais, Telnet, Mosh e de terminal local em pastas (caminhos no estilo Prod/DB). Use Nova / Pasta ou as ações que aparecem ao passar o mouse sobre uma pasta; clique duas vezes em uma sessão (ou pressione Enter) para conectar, e a caixa de pesquisa filtra por nome, host, dispositivo serial ou shell. Clique com o botão direito em uma sessão para Conectar, Editar…, Duplicar (uma cópia chamada " (cópia)" ao lado dela; uma senha salva no chaveiro não é copiada) e Excluir. Clique com o botão direito em uma pasta para Nova sessão aqui…, Nova pasta aqui…, Conectar todas (todas as sessões dela e das subpastas, cada uma em sua própria aba) e Excluir pasta. Enquanto o arquivo de sessões não puder ser lido, os menus só oferecem conectar. A caixa de diálogo de edição tem um seletor Tipo de sessão (SSH, Serial, Telnet, Mosh ou Terminal local) que mostra os campos correspondentes. As sessões seriais guardam o caminho do dispositivo e as configurações de linha, e as sessões Telnet o host e a porta; ambas abrem diretamente, sem senha. As sessões Mosh indicam a sessão SSH salva com a qual fazem login e um comando do servidor opcional. As sessões de terminal local guardam um shell (o padrão do sistema, um detectado ou qualquer programa, como em Configurações do terminal), seus argumentos e uma Pasta inicial (~ é a sua pasta pessoal; vazio também começa lá), de modo que um PowerShell, uma distribuição WSL ou a pasta de um projeto fica a um clique duplo; o título das abas delas é o nome do shell.

As sessões são armazenadas em ~/.config/dev.plexusterm.app/sessions.json (gravado de forma atômica, modo 0600); cada entrada tem um kind (ssh, serial, telnet, mosh ou local), e as entradas gravadas por versões anteriores sem ele são carregadas como sessões SSH. O arquivo nunca contém senhas nem frases secretas de chaves (veja Senhas salvas). Versões anteriores às sessões de terminal local não conseguem ler um arquivo que tenha uma delas, então mostram o erro abaixo em vez das sessões. Se o arquivo não puder ser lido, o painel mostra o erro e desativa a edição para que o arquivo nunca seja sobrescrito.

Senhas salvas

As sessões com senha salva (abas de terminal, Mosh e túneis) conectam primeiro: o PlexusTerm tenta suas chaves (veja Sessões SSH), depois a senha salva no chaveiro, e só pede a senha quando o servidor ainda precisa dela. Esse pedido tem uma caixa de seleção Salvar a senha no chaveiro do sistema, desmarcada por padrão. As sessões de conexão rápida recebem a senha na caixa de diálogo de conexão e nunca a salvam. Instalar no gerador de chaves SSH continua perguntando antes de conectar.

  • As senhas ficam somente no chaveiro do sistema, por meio da API Secret Service (GNOME Keyring, KWallet), sob o serviço dev.plexusterm.app, com o id da sessão como conta e o rótulo PlexusTerm: user@host:port. Elas nunca são gravadas em sessions.json nem em tunnels.json.
  • Uma senha só é salva depois de um login bem-sucedido. As conexões seguintes a leem no backend; ela nunca é enviada de volta à interface.
  • Uma senha salva fica vinculada ao user@host:port para o qual foi digitada e só é enviada para lá. Mudar o host, a porta ou o usuário de uma sessão (ou trocar a autenticação por senha por outra) esquece a senha salva; as senhas salvas por versões anteriores, que não têm esse vínculo, são pedidas novamente uma vez.
  • Se o chaveiro não conseguir salvar ou excluir a senha (por exemplo, porque está bloqueado e não responde em 10 segundos), a conexão abre mesmo assim e um aviso é mostrado: uma linha amarela na aba do terminal, ou uma nota abaixo do túnel.
  • Se a senha salva for rejeitada, o pedido aparece com a caixa marcada: um login bem-sucedido a substitui, e desmarcar a caixa a exclui. Se não houver uma senha utilizável salva, o pedido aparece desmarcado, como em um primeiro login.
  • Esquecer a senha salva na caixa de diálogo de edição da sessão a exclui; excluir uma sessão, ou uma pasta que a contenha, também a exclui.
  • Sem um Secret Service, a caixa de seleção fica desativada e as senhas são pedidas a cada conexão.
  • As frases secretas das chaves nunca são salvas.

Hosts de salto

Uma sessão SSH salva pode chegar ao seu servidor por até 3 hosts de salto (bastions), como ssh -J. Na caixa de diálogo de edição da sessão, Hosts de salto lista outras sessões SSH salvas na ordem em que são atravessadas: adicione-as pela lista, mova-as para cima ou para baixo, ou remova-as. As sessões de conexão rápida não têm hosts de salto.

  • O PlexusTerm faz login no primeiro host de salto, abre a partir dele uma conexão encaminhada para o endereço e a porta do próximo host, faz login nele, e assim por diante até o próprio servidor da sessão. Cada host é alcançado a partir do anterior, então o endereço dele precisa fazer sentido ali (por exemplo, um IP privado atrás do bastion).
  • Cada host é verificado em ~/.ssh/known_hosts com seu próprio endereço e porta; um host de salto desconhecido mostra o pedido de confiança com o nome dele ("bastion — host de salto 1 de 2").
  • Cada host faz login com o método da sua própria sessão salva (chave, agente ou senha). Os hosts com senha tentam primeiro suas chaves e depois a senha salva no chaveiro; um host que ainda precisa de senha é perguntado durante a conexão, um de cada vez ("Senha de bastion — host de salto 1 de 2"), cada pedido com sua própria caixa de seleção Salvar a senha no chaveiro do sistema.
  • Se um host de salto tiver seus próprios hosts de salto, eles são atravessados primeiro. Uma sessão não pode ser o seu próprio host de salto, e cadeias com ciclos, sessões repetidas, mais de 3 hosts no total, ou sessões de salto excluídas ou que não são SSH são recusadas com um erro.
  • Os erros indicam o host que falhou, por exemplo via bastion (jump host 1): authentication failed.
  • O navegador SFTP da aba usa a mesma conexão, e os túneis SSH cuja sessão tem hosts de salto também passam por eles. Fechar a aba (ou parar o túnel) fecha todas as conexões da cadeia.
  • Excluir uma sessão que outras sessões usam como host de salto pede confirmação e a remove dos hosts de salto delas.

Importar sessões de um arquivo .ini

Importar → De um arquivo .ini… no painel Sessões salvas lê um arquivo de sessões .ini com seções [Bookmarks] (UTF-8, ou a página de código Windows-1252 em que esses arquivos costumam ser gravados) e mostra uma prévia antes de salvar qualquer coisa:

  • As sessões SSH das seções [Bookmarks] / [Bookmarks_N] são importadas com seu host, porta (22 quando ausente ou inválida) e usuário, e as sessões Telnet com seu host e porta (23 quando ausente ou inválida), em uma pasta Imported que mantém o caminho de pastas salvo no arquivo.
  • As sessões SSH importadas usam autenticação por senha; mude isso depois com Editar. Os caminhos de chaves privadas não são importados.
  • Os outros tipos de sessão (RDP, VNC, Serial, WSL, FTP, ...), as entradas sem host e as linhas não reconhecidas são ignorados e contados por tipo na prévia.
  • As sessões já salvas com o mesmo tipo, pasta, nome, host, porta e usuário são ignoradas como duplicatas.
  • As senhas nunca são importadas: a seção [Passwords] e qualquer outra seção não são lidas.

Importar hosts do ~/.ssh/config

Importar → De ~/.ssh/config lê a configuração do cliente OpenSSH da sua pasta pessoal (~/.ssh/config, também no Windows) e mostra a mesma prévia:

  • Cada alias Host concreto se torna uma sessão SSH com o nome dele, em Imported/SSH config. Os padrões com curingas (*, ?) e negados (!) não são importados como sessões, mas suas opções se aplicam aos hosts que correspondem a eles, assim como as opções antes do primeiro Host; como no ssh, o primeiro valor de cada opção prevalece.
  • São lidos HostName (o alias quando ausente; %h é substituído pelo alias), User (vazio quando ausente), Port (22 quando ausente ou inválido) e o primeiro IdentityFile. Um host com IdentityFile usa essa chave privada (%d vira ~); um sem ele usa autenticação por senha.
  • Os saltos de ProxyJump que são hosts do mesmo arquivo se tornam os hosts de salto da sessão (no máximo 3). Outros saltos, como user@gateway:2222, e ProxyCommand não são suportados: o host é importado sem eles e contado na prévia.
  • As linhas Include e os blocos Match não são seguidos e são contados na prévia. Todas as outras opções são ignoradas.
  • Os hosts já importados da mesma forma são ignorados como duplicatas, então importar de novo só adiciona hosts novos.