Como configurar as ligações de putty para trabalhar com o cmd.exe corretamente?

2

Se a putty estiver conectada a um servidor ssh em execução no Windows e o cmd.exe for usado como shell, as teclas do cursor não funcionarão corretamente. Normalmente, você pode se lembrar de comandos antigos com cursor up/down , mas dentro de putty isso não funciona mais.

Alterar o tipo de terminal para massa não funcionou para mim. Usar um shell alternativo não seria uma solução. Se não for possível com putty, talvez haja algum cliente ssh alternativo que permita modificações na emulação de chaves / terminais?

    
por V15I0N 08.09.2011 / 22:33

1 resposta

5

O problema provavelmente não é o cliente, mas o servidor.

PuTTY é um emulador de terminal Xterm / VT100. O terminal VT100 seria anexado a uma extremidade de um fluxo serial simples de 8 bits, e enviaria "seqüências de escape" especiais para teclas de função - por exemplo, ESC [ A para a seta Up - e isso persistiu no Linux e no BSD de hoje. A edição de linha além do básico ← Backspace é manipulada pelos próprios programas, lendo e analisando essas seqüências de escape, e enviando mais delas para mover o cursor e exibir o texto. Tanto o Telnet quanto o SSH podem ser considerados portadores simples para o fluxo do terminal, exatamente como uma linha serial.

O que causa seus problemas é que os consoles do Windows não funcionam dessa maneira - em vez de ser um fluxo, o console é um buffer de tela. O subsistema do console tem edição de linha (e histórico básico) embutida, e o cmd.exe simplesmente usa essa funcionalidade com ReadConsole () cmd.exe é conectada a um canal, em vez de um console, esse sistema é ignorado e tudo é inserido diretamente na entrada corrente. Como cmd.exe não foi escrito para lidar com sequências VT100, ele não dá nenhum tratamento especial a eles, e ESC simplesmente se torna parte do comando inserido.

Isso significa que os servidores SSH do Windows, bem como o servidor Telnet interno do Windows, precisam traduzir as seqüências do VT100 para os eventos do console e formatam a saída do console para as seqüências do VT100. Nem todos os servidores SSH realmente se importam em fazer isso. Certifique-se de que a extremidade remota não alterou o software do servidor SSH dos usuários. Se as chaves costumavam funcionar com a configuração same agora, tente redefinir o PuTTY para suas configurações padrão com putty -cleanup ou excluindo a ramificação do registro manualmente.

O Windows PowerShell é fornecido com o suporte remoto , que usa recursos locais edição de linha e só envia linhas completas para o final remoto, evitando este problema. Para cmd.exe , isso pode ser obtido com psexec (embora o SMB a conexão não é criptografada por padrão), ou você provavelmente poderia iniciar cmd dentro de uma sessão remota do PowerShell.

    
por 08.09.2011 / 22:57