OpenSSH: Velocidade de digitação lenta quando no terminal pseudo

3

Atualizações

  • Eu reduzi isso a ocorrer apenas na rede sem fio no trabalho. De casa, eu não tenho atrasos / atrasos
  • Parece também que depois do uso "pesado" do SSH e do tunelamento através de uma ou duas máquinas, a rede me deixa completamente e sou forçada a reconectar manualmente
  • Analisando as capturas WireShark da sessão SSH do OpenSSH versus JSch, parece que o OpenSSH tem um punhado de pacotes TCP Dup Ack , TCP Retransmission e TCP Spurious Retransmission . Mas estes devem resolver-se, sendo TCP ..

Problema

Recentemente, ao me conectar a máquinas remotas usando o SSH, notei que há um atraso distinto de cerca de 1 segundo entre eu digitar algo e os caracteres realmente aparecendo. Se eu segurar as teclas, elas aparecerão em "lotes" de cerca de 20 caracteres em intervalos de ~ 1s.

Detalhes do sistema

$ ssh -V
    OpenSSH_7.2p2 Ubuntu-4ubuntu1, OpenSSL 1.0.2g-fips  1 Mar 2016        
$ echo $SHELL $TERM $DISPLAY
    /bin/zsh xterm-256color :0
$ uname -r; cat /proc/version
    4.4.0-22-generic
    Linux version 4.4.0-22-generic (buildd@lgw01-41) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016

Observações

Uma observação estranha é que o atraso existe apenas quando ocorre a alocação de um pseudo-terminal (isto é, o padrão ou a opção -t). Quando o pseudo-terminal é forçado a desabilitar, posso digitar comandos e obter sua saída sem demora.

  • Meu arquivo ~ / .ssh / config contém apenas "entradas simples do seguinte formato:
Host somename
    HostName 192.168.1.0
    User someuser
    IdentityFile ~/.ssh/id_rsa
  • Não há nenhum atraso quando desabilito explicitamente o pseudo-terminal (ou seja, usando a opção -T)
  • Alterar as configurações mencionadas em perguntas semelhantes não resolve o problema
  • O IntelliJ Idea Ultimate Edition pode criar conexões SSH que não têm esse problema. O IDE está executando o cliente Java SSH JSch
    • Isso me convenceu de que é um problema local e presumivelmente não está relacionado à minha interface de rede
  • Meus colegas de trabalho na mesma rede não têm esse problema, apesar de estarem usando Macbooks

O que eu tentei

  • Ativando a compactação, desativando o encaminhamento do X11, vários métodos para acelerar o processo de login
  • SSHing para localhost ( sem atraso / atraso aqui )
  • SSH para uma variedade de máquinas (ou seja, não apenas uma) - o atraso está presente
  • Baixando a versão estável mais recente do OpenSSH e criando-a para o meu sistema
    • O binário recém-compilado tem o mesmo problema , levando-me a pensar que é causado por algumas configurações complicadas
  • Garantindo que meu / etc / ssh / ssh_config pareça "normal"
    • Eu incluí no final do post apenas no caso de
  • Limpando o SSH e reinstalando usando o apt-get
  • Deixando cair em um TTY virtual (acho que é assim que eles são chamados ...) usando Ctrl + Alt + F {1-6} e SSHing de lá
  • Reiniciando
  • Mudando para uma rede diferente
    • O atraso / atraso só parece ser um problema na rede no trabalho. Em casa, não há atraso / atraso perceptível
  • Algumas outras coisas que estou esquecendo

tl; dr

Meu binário SSH / config / alguma coisa parece ter um atraso ao digitar e eu tentei muitas coisas sem sucesso. Talvez seja alguma coisa de buffer de caracteres? Quem sabe! Espero que você faça.

ssh -vvv

OpenSSH_7.2p2 Ubuntu-4ubuntu1, OpenSSL 1.0.2g-fips  1 Mar 2016
debug1: Reading configuration data /home/redacted/.ssh/config
debug1: /home/redacted/.ssh/config line 6: Applying options for ops1
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "xx.xx.xx.xx" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to xx.xx.xx.xx [xx.xx.xx.xx] port 22.
debug1: Connection established.
debug1: identity file /home/redacted/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/redacted/.ssh/id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to xx.xx.xx.xx:22 as 'redacted2'
debug3: hostkeys_foreach: reading file "/home/redacted/.ssh/known_hosts"
debug3: record_hostkey: found key type RSA in file /home/redacted/.ssh/known_hosts:2
debug3: load_hostkeys: loaded 1 keys from xx.xx.xx.xx
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c
debug2: host key algorithms: [email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa,[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected],zlib
debug2: compression stoc: none,[email protected],zlib
debug2: languages ctos: 
debug2: languages stoc: 
debug2: first_kex_follows 0 
debug2: reserved 0 
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: host key algorithms: ssh-rsa,ssh-dss
debug2: ciphers ctos: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: ciphers stoc: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: MACs ctos: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: MACs stoc: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
debug2: languages ctos: 
debug2: languages stoc: 
debug2: first_kex_follows 0 
debug2: reserved 0 
debug1: kex: algorithm: diffie-hellman-group-exchange-sha256
debug1: kex: host key algorithm: ssh-rsa
debug1: kex: server->client cipher: aes128-ctr MAC: [email protected] compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: [email protected] compression: none
debug3: send packet: type 34
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(2048 closed
debug3: receive packet: type 96
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug3: receive packet: type 97
debug2: channel 0: rcvd close
debug3: channel 0: will not send data after close
logout
debug3: channel 0: will not send data after close
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug3: send packet: type 97
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
  #0 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cc -1)

debug3: send packet: type 1
debug1: fd 1 clearing O_NONBLOCK
debug3: fd 2 is not O_NONBLOCK
Connection to xx.xx.xx.xx closed.
Transferred: sent 3376, received 3072 bytes, in 0.8 seconds
Bytes per second: sent 3981.4, received 3622.9
debug1: Exit status 0

ssh -vvvT

OpenSSH_7.2p2 Ubuntu-4ubuntu1, OpenSSL 1.0.2g-fips  1 Mar 2016
debug1: Reading configuration data /home/redacted/.ssh/config
debug1: /home/redacted/.ssh/config line 6: Applying options for ops1
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "xx.xx.x.xx" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to xx.xx.x.xx [xx.xx.x.xx] port 22.
debug1: Connection established.
debug1: identity file /home/redacted/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/redacted/.ssh/id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to xx.xx.x.xx:22 as 'redacted'
debug3: hostkeys_foreach: reading file "/home/redacted/.ssh/known_hosts"
debug3: record_hostkey: found key type RSA in file /home/redacted/.ssh/known_hosts:2
debug3: load_hostkeys: loaded 1 keys from xx.xx.x.xx
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c
debug2: host key algorithms: [email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa,[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected],zlib
debug2: compression stoc: none,[email protected],zlib
debug2: languages ctos: 
debug2: languages stoc: 
debug2: first_kex_follows 0 
debug2: reserved 0 
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: host key algorithms: ssh-rsa,ssh-dss
debug2: ciphers ctos: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: ciphers stoc: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: MACs ctos: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: MACs stoc: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
debug2: languages ctos: 
debug2: languages stoc: 
debug2: first_kex_follows 0 
debug2: reserved 0 
debug1: kex: algorithm: diffie-hellman-group-exchange-sha256
debug1: kex: host key algorithm: ssh-rsa
debug1: kex: server->client cipher: aes128-ctr MAC: [email protected] compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: [email protected] compression: none
debug3: send packet: type 34
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(2048 drain
debug2: channel 0: ibuf empty
debug2: channel 0: send eof
debug3: send packet: type 96
debug2: channel 0: input drain -> closed
debug3: receive packet: type 98
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug3: receive packet: type 96
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug3: receive packet: type 97
debug2: channel 0: rcvd close
debug3: channel 0: will not send data after close
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug3: send packet: type 97
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
  #0 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cc -1)

debug3: send packet: type 1
debug1: fd 1 clearing O_NONBLOCK
debug3: fd 2 is not O_NONBLOCK
Transferred: sent 3040, received 2800 bytes, in 1.9 seconds
Bytes per second: sent 1598.6, received 1472.4
debug1: Exit status 0

/ etc / ssh / ssh_config


# This is the ssh client system-wide configuration file.  See
# ssh_config(5) for more information.  This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.

# Configuration data is parsed as follows:
#  1. command line options
#  2. user-specific file
#  3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.

# Site-wide defaults for some commonly used options.  For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.

Host *
#   ForwardAgent no
#   ForwardX11 no
#   ForwardX11Trusted yes
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange yes
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
#   Protocol 2
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
#    SendEnv LANG LC_*
    HashKnownHosts yes
   # GSSAPIAuthentication yes
   # GSSAPIDelegateCredentials no

    
por elmis 27.05.2016 / 21:58

2 respostas

0

Infelizmente, não posso comentar ainda.

O que me vem à mente no cliente:

Já deu uma olhada em top para ver a carga da CPU? Talvez o processo de SSH use CPU para criptografia.

Já deu uma olhada em ssh -v[vv] e inspecionou alguma estranheza? Talvez o servidor e o cliente concordem em uma criptografia ou MAC muito segura. Dê uma olhada para

debug2: ciphers ctos: arcfour
debug2: ciphers stoc: arcfour
[...]
debug1: kex: server->client cipher: arcfour MAC: [email protected] compression: [email protected]
debug1: kex: client->server cipher: arcfour MAC: [email protected] compression: [email protected]

(onde arcfour é realmente um dos mais fracos algoritmos de CPU mais baixa. Estou conectando via um proxy SSH). Além disso, procure por mensagens rekeying.

Além disso, a compactação pode ser um problema. No entanto, ssh não parece ser muito explícito sobre o nível de compressão aqui.

debug2: compression ctos: [email protected],zlib,none
debug2: compression stoc: [email protected],zlib,none

Você não disse explicitamente como os servidores remotos são "remotos". Na mesma rede, em uma rede diferente no mesmo campus, via internet?

Se, através da Internet, talvez o firewall corporativo esteja inspecionando profundamente o tráfego SSH na porta 22. Talvez uma alteração na porta possa ajudar, se você puder controlar o arquivo /etc/ssh/sshd_config dos servidores SSH.

Se através da internet, o SSH é o único túnel que você usa, ou você está usando o SSH através de uma VPN adicional?

Se no mesmo campus, também firewalls, roteamento, inspecionando problemas vêm à minha mente. Uma vez eu estava culpando meu provedor de internet por problemas com minha internet; foi muito lento. Passou por dias. Até descobrir que habilitei a depuração no meu roteador Cisco, que consumia recursos lá.

Se local ou remoto, você está se conectando diretamente ou através de um proxy SSH, gateway ou host de salto? Nesse caso, como na VPN, você tem criptografia dupla.

    
por 28.05.2016 / 23:33
0

O problema estará em algum lugar no roteador wifi. Eu mudei o nome do meu SSID para ser diferente para 2.4GHz e 5Ghz, para verificar se o problema não está relacionado à frequência e isso sozinho resolveu meu problema. Agora funciona sem atrasos em qualquer frequência. Infelizmente, mesmo quando eu renomei o SSID de volta para ser o mesmo. Então não há solução real.

    
por 11.12.2016 / 18:05

Tags