Problema estranho: redefinição de conexão por pares


10

Estou tendo alguns problemas com o SSH no meu servidor Linux executando o CentOS. Posso me conectar ao meu servidor usando PuTTY ou ssh no windows cmd. O mesmo vale para o uso de FTP seguro. Posso me conectar ao servidor, obter uma lista de arquivos e está tudo bem. O problema ocorre quando tento enviar qualquer quantidade de dados pela rede.

Sempre que tento transferir algo além de um determinado limite, a conexão falha e vejo uma mensagem 'Conexão redefinida por ponto'. Eu tenho um arquivo sql com cerca de 3 MB no meu diretório pessoal. Se eu tentar enviá-lo por FTP, ele iniciará a transferência e morrerá após a transferência de cerca de 48k. Em seguida, iniciará uma nova conexão e transferirá outros 48k. Se eu usar o PuTTY e abrir uma sessão, eu posso conectar e entrar bem. Se eu tentar cat file.sqlnovamente, a conexão será encerrada e eu recebo a mensagem 'Connection reset by peer'. Indo da minha estação de trabalho local para o servidor, é a mesma situação. Eu tenho um pouco de código fonte que eu preciso confirmar no meu repositório svn hospedado no servidor, mas a mesma mensagem 'Conexão redefinida pelo par' aparece.

Sei que o problema está na minha estação de trabalho local porque posso usar o macbook e o ssh da minha esposa no servidor sem problemas. Posso ssh na caixa linux de um amigo (usando a mesma instalação putty) e sftp no meu servidor a partir deles e fazer o download do arquivo, abrir outra sessão ssh da caixa dele no meu servidor e criar o arquivo. Então, algo está acontecendo, mas não sei ao certo o que. Alguém tem alguma idéia?

Atualizar

Eu tenho tentado descobrir isso um pouco mais, e parece que há um limite rígido da quantidade de dados que posso transferir em uma única sessão ssh. Eu acerto imediatamente, se sim, cat file.sqlmas também posso continuar digitando ls -lum número consistente de vezes e também recebo a mensagem 'Conexão redefinida por pares'. Eu tentei:

  • gerando novas chaves ssh
  • reiniciando meu roteador
  • reiniciando meu computador
  • reiniciando o servidor remoto

Eu escrevi um tcpdump no servidor remoto, mas não entendo o TCP em um nível tão detalhado que faz muito sentido para mim. Ativei a depuração no ssh e aqui está a parte do log que antecedeu a conexão sendo redefinida:

Jul 24 23:10:56 server sshd[4507]: debug1: permanently_set_uid: 500/503
Jul 24 23:10:56 server sshd[4507]: debug1: Entering interactive session for SSH2.
Jul 24 23:10:56 server sshd[4507]: debug1: server_init_dispatch_20
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_open: ctype session rchan 256 win 16384 max 16384
Jul 24 23:10:56 server sshd[4507]: debug1: input_session_request
Jul 24 23:10:56 server sshd[4507]: debug1: channel 0: new [server-session]
Jul 24 23:10:56 server sshd[4507]: debug1: session_new: init
Jul 24 23:10:56 server sshd[4507]: debug1: session_new: session 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_open: channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_open: session 0: link with channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_open: confirm session
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_req: channel 0 request pty-req reply 1
Jul 24 23:10:56 server sshd[4507]: debug1: session_by_channel: session 0 channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_input_channel_req: session 0 req pty-req
Jul 24 23:10:56 server sshd[4507]: debug1: Allocating pty.
Jul 24 23:10:56 server sshd[4505]: debug1: session_new: init
Jul 24 23:10:56 server sshd[4505]: debug1: session_new: session 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_pty_req: session 0 alloc /dev/pts/2
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_req: channel 0 request shell reply 1
Jul 24 23:10:56 server sshd[4507]: debug1: session_by_channel: session 0 channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_input_channel_req: session 0 req shell
Jul 24 23:10:56 server sshd[4508]: debug1: Setting controlling tty using TIOCSCTTY.
Jul 24 23:10:59 server sshd[4507]: Read error from remote host <my-ip>: Connection reset by peer
Jul 24 23:10:59 server sshd[4507]: debug1: do_cleanup
Jul 24 23:10:59 server sshd[4505]: debug1: do_cleanup
Jul 24 23:10:59 server sshd[4505]: debug1: PAM: cleanup
Jul 24 23:10:59 server sshd[4505]: debug1: PAM: deleting credentials
Jul 24 23:10:59 server sshd[4505]: debug1: PAM: closing session
Jul 24 23:10:59 server sshd[4505]: pam_unix(sshd:session): session closed for user <me>
Jul 24 23:10:59 server sshd[4505]: debug1: session_pty_cleanup: session 0 release /dev/pts/2

ATUALIZAÇÃO 2:

Cerca de uma semana atrás, modifiquei minhas configurações de ssh no meu servidor usando esta postagem da wiki: http://wiki.centos.org/HowTos/Network/SecuringSSH

Como ocasionalmente preciso acessar meu servidor do trabalho e porque a porta 21 está aberta em nosso firewall, alterei a porta ssh para 21. Para diagnosticar ainda mais esse problema, tentei reverter minhas configurações de ssh e alterei a porta ssh para 22 Baixo e eis que não encontro o erro quando uso a porta 22. Altere-o novamente para 21 e goste de relógio quando atingir 48k de dados transferidos - Conexão redefinida por pares.

Dado que posso obter a conexão inicial e que não tive problemas no passado ao estabelecer conexões ftp na porta 21, não parece que minha configuração de firewall é o problema.

Pelo menos neste momento, o problema foi reduzido para a porta ssh no meu servidor. Gire-o para 21 e problemas instantâneos, altere-o novamente para 22, não há problema algum ...

Alguém pode pensar por que a porta de escuta faria diferença? Novamente, é apenas na minha caixa do Windows XP que está causando problemas. Deixe-me saber se alguém tem alguma opinião sobre o que pode causar isso.

Atualização 2:

Apenas reduzi o problema e estou corrigido - é um problema de firewall, mas um problema de firewall do Windows, não no meu roteador. Se eu usar a porta 21 e desativar o firewall do Windows, não encontro a mensagem 'Redefinição de conexão por ponto'. Para responder à pergunta óbvia, sim, a porta 21 está aberta no firewall do Windows.

Como este computador está atrás do firewall no meu roteador, posso desativá-lo por enquanto, mas estaria interessado em descobrir o que está acontecendo aqui.


+1 Eu vejo o mesmo problema aqui em um PC com Windows 7 tentando conectar-se a um servidor SSH pela porta 21. A conexão é adequada para acesso ao shell até eu começar a usar o túnel na mesma conexão para transferir mais dados. A resposta de Alessandro abaixo corrigiu para mim.
— Wim Coenen

Respostas:


10

Você pode resolver usando a linha de comando com este comando (digite isto como administrador):

netsh advfirewall set global statefulftp disable


+1 corrigiu isso para mim. Para maior clareza: este comando deve ser executado no PC com Windows.
— Wm Coenen

Excelente, estou tendo esse problema exato há algum tempo. Tudo relacionado ao firewall do Windows 7. Ambos com Putty SSH acima de 21 e conexões NXclient (nxshh) acima de 21. netsh advfirewall set global statefulftp disable Isso permite que minha conexão nxclient agora conecte e conclua a conexão para que eu veja a área de trabalho.

1

Isso pode estar relacionado ao seu roteador tentar lidar com o rastreamento de conexão NAT FTP automaticamente. Isso aconteceria apenas na porta 21, não na 22. Confira http://www.faqs.org/docs/iptables/complexprotocols.html


Obrigado, vou verificar o artigo e ver se ele esclarece o que está acontecendo.
— proflux 26/07/10

Ricardo parece estar correto. Veja a discussão em winscp.net/forum/viewtopic.php?t=9360 . Gostaria de saber se há algo explorável em qualquer edição desta gatilhos em ip_conntrack_ *
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.