Estamos tentando conectar ao serviço de telnet do Linux usando um simples programa de terminal; Eu suspeito que o servidor esteja definido como VT-100 padrão, e o servidor telnet envia sequências de handshake de controle, esperando que o terminal responda com suas opções suportadas e trava aguardando a resposta do terminal.
(desculpas pela má qualidade da imagem)
Infelizmente, o terminal é apenas um programa de comunicação simples e não sabe sobre o protocolo telnet.
Existe alguma maneira de informar ao servidor de telnet (por exemplo, através da configuração de um tipo de terminal específico) para não iniciar a identificação das propriedades do terminal remoto, mas ir diretamente para a comunicação?
Editar:
Por favor, edite a pergunta com mais detalhes: Qual terminal você está usando, que programa de "comunicação simples" é esse?
O programa de comunicação abre a conexão TCP com o PC linux na porta 23, depois envia os caracteres digitados no teclado e exibe os caracteres recebidos na tela sem processamento de caracteres.
Você pode executar o netcat no servidor em vez (ou além disso) do telnetd e usá-lo para depurar se a comunicação por si só estiver funcionando
Não tenho certeza, não controlo as duas máquinas. Mas é 100% verdade que o terminal em execução da máquina é capaz de se conectar à máquina linux, e a máquina linux é capaz de enviar caracteres de controle de protocolo telnet (você pode vê-lo na imagem - caracteres brancos são 0xff - marca de início da opção telnet) . Não posso dizer 100% porque não tenho logs do Wireshark, mas parece que a comunicação funciona corretamente, e é o servidor de telnet que não passa pelo protocolo de telnet.
Depois de conectado, você deseja fazer login ou deseja fazer mais alguma coisa? Você pode usar algo mais seguro no terminal, por exemplo, ssh?
Sim, quero que o servidor telnet exiba "login:" pedindo para fazer login no sistema. o serviço telnet na máquina linux está operacional, porque é possível registrá-lo na terceira máquina usando o cliente telnet - mas esse cliente telnet está ciente do protocolo telnet e responde a ele. No caso descrito acima, o programa temrinal não sabe nada sobre códigos / protocolo de controle telnet e os exibe como caracteres sem nenhuma ação adicional (resposta de acordo com o protocolo telnet).
netcat
no servidor (ou em adição)telnetd
e usá-lo para depurar se a comunicação por si só estiver funcionando? Uma vez conectado, você deseja fazer login ou deseja fazer mais alguma coisa? Você pode usar algo mais seguro no terminal, por exemplossh
?Respostas:
Primeiro de tudo, a negociação telnet não tem nada a ver com tipos de terminal. (Na verdade, o tipo de terminal é determinado durante a negociação do telnet.) Portanto, você não pode desativar o primeiro alterando o último.
Como você pode desativá-lo depende da implementação específica do telnetd no servidor. (Contei cinco in.telnetds diferentes apenas no Linux, outros sistemas operacionais têm os seus.)
Às vezes, há uma opção de linha de comando telnetd que você pode usar na configuração do serviço (ou seja, em um arquivo .service do systemd ou em / etc / inetd).
Se tudo falhar, você pode compilar sua própria versão do telnetd corrigida; todas as distribuições Linux têm uma maneira de reconstruir pacotes a partir da receita oficial (dpkg-buildpackage, makepkg ...)
fonte