É possível obter um prompt de login em um servidor remoto, diretamente após o boot?

1

O fluxo de trabalho normal para se conectar a uma máquina remota é o seguinte:

  1. Faça login na máquina local
  2. Acionar uma janela do terminal
  3. Digite "ssh usuá[email protected]"
  4. Faça login na máquina remota

Eu quero me livrar do login local e compactar isso em uma única etapa. Como um terminal VT220 faria. Fluxo de trabalho pretendido:

  1. Inicialize o terminal machine (modo de texto)
  2. O usuário apresentou um tty com prompt de login em
  3. Tipos de usuários em suas credenciais
  4. As credenciais são verificadas em uma máquina remota (r.lan)
  5. O usuário coloca em um shell a máquina remota (r.lan)

Contexto: Estou projetando um aplicativo de terminal simples, que quero que alguns clientes usem. O aplicativo deve ser executado a partir de terminais dedicados com o mínimo de hardware. Se eu executar o aplicativo localmente, posso apenas alterar o shell de login para apontar para o aplicativo e obter o fluxo de trabalho desejado (user-auth e, em seguida, diretamente para o aplicativo). No entanto, eu quero que este aplicativo resida em um servidor, e não que o usuário interaja explicitamente com a máquina local e o ssh.

    
por Heinrich Hartmann 14.10.2018 / 23:59

1 resposta

2

Quando eu estava estudando em uma Universidade de Tecnologia (em 1997), a guilda estudantil local recebeu alguns terminais VT220 antigos e PCs de baixa especificação (imagine CPUs Intel 20 MHz 386) como uma doação (da computação uni centro, eu acho). O guildroom já tinha um PC ou dois que podiam rodar um navegador web, mas o serviço mais necessário entre os estudantes era apenas uma conexão SSH que poderia ser usada para ler e-mails e usar o sistema de inscrição do curso (baseado em texto). >

Liguei os terminais aos PCs, configurei os getty processos para mostrar um prompt hostname: em vez do usual login: . Então peguei o código-fonte de /bin/login e fiz uma versão modificada dele.

Esse programa aceitaria o nome do host inserido para getty como um parâmetro de linha de comando (assim como o nome de usuário normalmente seria), então solicitará um nome de usuário real e, em seguida, exec() a SSH para o host remoto desejado. Quando o comando SSH saía, toda a "sessão de login" morreria e o processo seria reiniciado automaticamente, pois init reiniciava getty .

A mesma configuração pode ser usada em um console local e em uma conexão de terminal serial. Agora, cada um desses PCs antigos poderia servir como um quiosque SSH de vários lugares!

Você poderia fazer algo semelhante, mas ainda mais simples, já que não precisaria da etapa de solicitação do nome do host. Seu /bin/login modificado só precisaria aceitar o nome de usuário já digitado e iniciar um SSH para um computador remoto específico. O cliente SSH mostraria um prompt de senha.

    
por 15.10.2018 / 08:24

Tags