Ich habe einige Probleme mit SSH auf meinem Linux-Server, auf dem CentOS ausgeführt wird. Ich kann mit PuTTY oder ssh von Windows Cmd aus eine gute Verbindung zu meinem Server herstellen. Gleiches gilt für die Verwendung von sicherem FTP. Ich kann eine Verbindung zum Server herstellen, eine Liste der Dateien abrufen und alles ist in Ordnung. Das Problem tritt auf, wenn ich versuche, eine beliebige Datenmenge über das Netzwerk zu senden.
Immer wenn ich versuche, etwas über einen bestimmten Schwellenwert hinaus zu übertragen, schlägt die Verbindung fehl und es wird die Meldung "Verbindung durch Peer zurückgesetzt" angezeigt. Ich habe eine SQL-Datei mit ca. 3 MB in meinem Home-Verzeichnis. Wenn ich versuche, es per FTP zu übertragen, beginnt die Übertragung und stirbt, nachdem etwa 48 KB übertragen wurden. Dann wird eine neue Verbindung hergestellt und weitere 48 KB übertragen. Wenn ich PuTTY verwende und eine Sitzung öffne, kann ich mich gut verbinden und anmelden. Wenn ich es cat file.sql
erneut versuche, wird die Verbindung beendet und ich erhalte die Meldung "Verbindung durch Peer zurückgesetzt". Beim Wechsel von meiner lokalen Workstation zum Server ist es die gleiche Situation. Ich habe ziemlich viel Quellcode, den ich für mein auf dem Server gehostetes SVN-Repository festschreiben muss, aber die gleiche Meldung "Verbindung durch Peer zurücksetzen" wird angezeigt.
Ich weiß, dass das Problem auf meiner lokalen Workstation liegt, da ich das Macbook und SSH meiner Frau problemlos auf dem Server verwenden kann. Ich kann in die Linux-Box eines Freundes ssh (mit derselben Kitt-Installation) und von dort auf meinen Server sftp und die Datei herunterladen, eine weitere ssh-Sitzung von seiner Box auf meinen Server öffnen und die Datei katzen. Es ist also etwas los, aber ich bin mir nicht sicher, was. Hat jemand irgendwelche Ideen?
Aktualisieren
Ich habe versucht, dies noch einmal herauszufinden, und es scheint, dass die Datenmenge, die ich in einer einzelnen SSH-Sitzung übertragen kann, stark begrenzt ist. Ich drücke sofort darauf, cat file.sql
aber ich kann auch ls -l
eine konsistente Anzahl von Malen eingeben und erhalte auch die Meldung "Verbindung durch Peer zurückgesetzt". Ich habe es versucht:
- Generieren neuer SSH-Schlüssel
- Neustart meines Routers
- Neustart meines Computers
- Neustart des Remote-Servers
Ich habe einen tcpdump auf dem Remote-Server geschrieben, aber ich verstehe TCP nicht so detailliert, dass es für mich sehr sinnvoll ist. Ich habe das Debuggen in ssh aktiviert und hier ist der Teil des Protokolls, der zum Zurücksetzen der Verbindung führt:
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
UPDATE 2:
Vor ungefähr einer Woche habe ich meine SSH-Einstellungen auf meinem Server mithilfe dieses Wiki-Beitrags geändert: http://wiki.centos.org/HowTos/Network/SecuringSSH
Da ich gelegentlich von der Arbeit aus auf meinen Server zugreifen muss und Port 21 in unserer Firewall geöffnet ist, habe ich den SSH-Port auf 21 geändert. Um dieses Problem weiter zu diagnostizieren, habe ich versucht, meine SSH-Einstellungen zurückzusetzen und den SSH-Port wieder auf 22 zu ändern Niedrig und siehe da, der Fehler tritt nicht auf, wenn ich Port 22 verwende. Ändern Sie ihn wieder auf 21 und wie am Schnürchen, wenn ich 48.000 übertragene Daten erreiche - Verbindung durch Peer zurückgesetzt.
Angesichts der Tatsache, dass ich die erste Verbindung herstellen kann und in der Vergangenheit keine Probleme beim Herstellen von FTP-Verbindungen an Port 21 hatte, scheint meine Firewall-Konfiguration nicht das Problem zu sein.
Zumindest zu diesem Zeitpunkt habe ich das Problem auf den SSH-Port auf meinem Server eingegrenzt. Drehen Sie es auf 21 und sofortige Probleme, ändern Sie es wieder auf 22, überhaupt kein Problem ...
Kann sich jemand vorstellen, warum der Listen-Port einen Unterschied machen würde? Wiederum verursacht es nur auf meiner Windows XP-Box Probleme. Lassen Sie mich wissen, wenn jemand darüber nachdenkt, was dies verursachen könnte.
Update 2:
Ich habe das Problem nur eingegrenzt und bin korrigiert - es handelt sich um ein Firewall-Problem, aber um ein Windows-Firewall-Problem, nicht um meinen Router. Wenn ich Port 21 verwende und die Windows-Firewall deaktiviere, wird die Meldung "Verbindung durch Peer zurücksetzen" nicht angezeigt. Um die offensichtliche Frage zu beantworten: Ja, Port 21 ist in der Windows-Firewall geöffnet.
Da sich dieser Computer hinter der Firewall meines Routers befindet, kann ich ihn vorerst nur deaktivieren, aber ich würde gerne herausfinden, was hier vor sich geht.
Antworten:
Sie können mit diesem Befehl über die Befehlszeile lösen (geben Sie dies als Administrator ein):
netsh advfirewall set global statefulftp disable
quelle
Dies kann damit zusammenhängen, dass Ihr Router versucht, die FTP-NAT-Verbindungsverfolgung automatisch zu verarbeiten. Dies würde nur auf Port 21 geschehen, nicht auf 22. Überprüfen Sie http://www.faqs.org/docs/iptables/complexprotocols.html
quelle