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.sql
novamente, 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.sql
mas também posso continuar digitando ls -l
um 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.