Koneksi SSH membeku dengan “Write gagal: Pipa rusak”

12

Saya terhubung ke kotak CentOS 5.5 melalui SSH dari mesin Ubuntu 11.04.

Koneksi tampak berfungsi seperti yang diharapkan ketika sedang digunakan aktif (yaitu tidak ada lag atau kerugian), tetapi jika dibiarkan tidak aktif untuk sementara waktu itu akan membeku dan menjadi tidak responsif. Akhirnya pesan kesalahan "Tulis gagal: Pipa rusak" akan dikembalikan dan saya akan kembali pada prompt mesin lokal saya.

Hal-hal apa yang dapat saya lakukan untuk membantu men-debug ini, mencari tahu apa yang terjadi, dan menyelesaikannya? Menjadi pengembang, ini membuat hidup saya sakit karena harus terhubung kembali terus-menerus.

Stephen RC
sumber

Jawaban:

15

Sepertinya konfigurasi SSHD kotak CentOS tidak diatur untuk melakukan klien KeepAlive.

Letakkan kedua baris ini di konfigurasi sshd CentOS Anda (/ etc / ssh / sshd_config), restart, dan nikmati!

KeepAlive yes
ClientAliveInterval 60

Saat Anda melakukannya, saya sarankan menggunakan gnu screenuntuk menjaga sesi Anda tetap hidup di sisi CentOS.

yuriismaster
sumber
1
KeepAlive sebagai telah diubah namanya menjadi TCPKeepAlive dan dapat dibiarkan pada nilai default yaitu ya. ClientAliveInterval harus memadai. Lihat man sshd_config.
ypid
9

Jawaban sebenarnya hampir selalu bahwa Anda memiliki perangkat NAT semacam di jalan, biasanya firewall, yang tabel keadaannya memiliki batas waktu yang cukup agresif. Karena Anda membiarkan koneksi ssh Anda menganggur selama beberapa periode waktu, perangkat NAT "lupa" pemetaan antara alamat dalam dan nomor port sumber Anda, dan alamat port dan nomor NATE yang sesaat di luar Anda.

Ketika Anda kemudian mencoba untuk melakukan sesuatu di jendela ssh itu, pasangan alamat / port ephemeral baru ditugaskan kepada Anda, yang tidak diketahui oleh server ssh tujuan, dan tidak merespons; kemudian, beberapa batas waktu lokal tercapai, dan koneksi dijatuhkan oleh mesin lokal Anda.

Perbaikan praktis untuk ini adalah melakukan persis seperti yang disarankan oleh yuriismaster: aktifkan KeepAlives (yang memastikan lalu lintas reguler untuk "menggelitik" entri tabel negara), dan gunakan screendi sisi jarak jauh (untuk mempertahankan keadaan jika terjadi penurunan). Saya hanya mengirim jawaban ini karena Anda bertanya apa yang terjadi, serta apa yang harus dilakukan. Semoga ini menjelaskan mengapa saran yuriismaster itu bagus.

MadHatter
sumber
Itu masuk akal! Kami memiliki NAT dengan pengaturan DMZ untuk kotak ini. Saya akan mencoba konfigurasi timeout dan melihat apakah itu cocok untuk saya. Terima kasih :)
Stephen RC
Saya menerima Anda karena Anda membantu saya memahami alasan di balik masalah. Tapi kredit harus ke @ yuriismaster untuk perbaikannya.
Stephen RC
Valorin: tentu saja, dan dia yang pertama. Terus terang, saya pikir dia layak menerima lebih dari saya; tapi itu pertanyaan Anda, jadi itu harus sesuai keinginan Anda. Terima kasih atas umpan baliknya.
MadHatter