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.