Saya mengalami beberapa masalah dengan SSH di server linux saya yang menjalankan CentOS. Saya dapat terhubung ke server saya menggunakan Putty atau ssh dari windows cmd. Hal yang sama berlaku untuk menggunakan FTP aman. Saya dapat terhubung ke server, mendapatkan daftar file dan semuanya baik-baik saja. Masalahnya terjadi ketika saya mencoba mengirim sejumlah data di jaringan.
Setiap kali saya mencoba mentransfer sesuatu di luar batas tertentu, koneksi gagal dan saya melihat pesan 'Koneksi reset oleh rekan'. Saya memiliki file sql yaitu sekitar 3 MB di direktori home saya. Jika saya mencoba untuk FTP itu, itu akan memulai transfer dan mati setelah sekitar 48k telah ditransfer. Kemudian akan memulai koneksi baru dan mentransfer 48k lainnya. Jika saya menggunakan Putty dan membuka sesi saya dapat terhubung dan masuk dengan baik. Jika saya mencoba cat file.sql
lagi, koneksi terputus dan saya mendapatkan pesan 'Koneksi reset oleh rekan'. Pergi dari workstation lokal saya ke server, situasinya sama. Saya memiliki sedikit kode sumber yang harus saya komit ke repositori svn saya yang dihosting di server, tetapi pesan 'Koneksi reset oleh rekan' yang sama muncul.
Saya tahu masalahnya ada di workstation lokal saya karena saya dapat menggunakan macbook istri saya dan ssh ke server tanpa masalah. Saya dapat ssh ke kotak linux seorang teman (menggunakan pemasangan dempul yang sama) dan sftp ke server saya dari mereka dan mengunduh file, buka sesi ssh lain dari kotaknya ke server saya dan cat file. Jadi, ada sesuatu yang terjadi, tetapi saya tidak yakin apa. Adakah yang punya ide?
Memperbarui
Saya telah mencoba untuk mencari tahu lebih banyak lagi, dan sepertinya ada batasan jumlah data yang dapat saya transfer dalam satu sesi ssh. Saya langsung menekannya jika saya lakukan cat file.sql
tetapi saya juga bisa terus mengetik ls -l
beberapa kali secara konsisten dan juga akan mendapatkan pesan 'Koneksi reset oleh rekan'. Saya sudah mencoba:
- menghasilkan kunci ssh baru
- me-restart router saya
- nyalakan kembali komputer saya
- memulai kembali server jarak jauh
Saya menulis tcpdump pada server jarak jauh, tetapi saya tidak mengerti TCP pada tingkat yang begitu rinci sehingga sangat masuk akal bagi saya. Saya menyalakan debugging di ssh dan di sini adalah bagian dari log yang mengarah ke koneksi yang diatur ulang:
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
PEMBARUAN 2:
Sekitar seminggu yang lalu, saya mengubah pengaturan ssh saya di server saya menggunakan posting wiki ini: http://wiki.centos.org/HowTos/Network/SecuringSSH
Karena saya kadang-kadang perlu mengakses server saya dari kantor, dan karena port 21 terbuka di firewall kami, saya mengubah port ssh menjadi 21. Untuk mendiagnosis masalah ini lebih lanjut, saya mencoba untuk mengembalikan pengaturan ssh saya dan mengubah port ssh kembali ke 22 Rendah dan lihatlah, saya tidak menemukan kesalahan ketika saya menggunakan port 22. Ubah kembali ke 21, dan seperti jarum jam ketika saya menekan 48k data yang ditransfer - Koneksi reset oleh rekan.
Mengingat bahwa saya bisa mendapatkan koneksi awal dan bahwa saya tidak punya masalah di masa lalu membangun koneksi ftp pada port 21, sepertinya konfigurasi firewall saya tidak menjadi masalah.
Setidaknya pada titik ini, saya punya masalah dipersempit ke port ssh di server saya. Balikkan ke 21 dan masalah instan, ubah kembali ke 22, tidak ada masalah sama sekali ...
Adakah yang bisa memikirkan mengapa mendengarkan port akan membuat perbedaan? Sekali lagi, ini hanya pada kotak Windows XP saya yang menyebabkan masalah. Beri tahu saya jika ada yang memiliki pemikiran tentang apa yang menyebabkan hal ini.
Pembaruan 2:
Hanya mempersempit masalah dan saya berdiri dikoreksi - ini adalah masalah firewall, tetapi masalah firewall Windows, bukan di router saya. Jika saya menggunakan port 21 dan menonaktifkan firewall windows saya tidak menemukan pesan 'Koneksi reset oleh rekan'. Untuk menjawab pertanyaan yang jelas, ya, port 21 terbuka di windows firewall.
Karena komputer ini berada di belakang firewall pada router saya, saya hanya dapat menonaktifkannya untuk saat ini, tetapi saya akan tertarik untuk mencari tahu apa yang terjadi di sini.
Jawaban:
Anda dapat menyelesaikan menggunakan baris perintah dengan perintah ini (ketikkan ini sebagai administrator):
netsh advfirewall set global statefulftp disable
sumber
Ini dapat dikaitkan dengan router Anda yang mencoba menangani pelacakan koneksi NAT NAT secara otomatis. Itu hanya akan terjadi pada port 21, bukan 22. Lihat http://www.faqs.org/docs/iptables/complexprotocols.html
sumber