Saya menemukan pertanyaan ini , tetapi saya minta maaf saya tidak begitu mengerti pengaturan pada dua variabel ServerAliveInterval
dan ClientAliveInterval
disebutkan dalam respons yang diterima. Jika server lokal saya kehabisan waktu, haruskah saya menetapkan nilai ini ke nol? Akankah kemudian tidak pernah ada waktu? Haruskah saya mengaturnya menjadi 300 detik atau sesuatu?
Pertanyaan saya sederhana, beberapa koneksi saya mati ketika saya menangguhkan & kemudian membatalkan penggunaan laptop saya dengan respon Write failed: Broken pipe
dan beberapa tidak. Bagaimana saya bisa mengkonfigurasi sshd lokal dengan benar sehingga mereka tidak gagal dengan pipa yang rusak?
sumber
Ini dijelaskan dalam
sshd_config
manual (man sshd_config
):Untuk opsi klien, lihat penjelasannya di
man ssh_config
:Berdasarkan di atas, 0 berarti dinonaktifkan. Karena itu Anda harus menetapkan nilai-nilai ini cukup tinggi untuk menghindari kesalahan pipa Rusak .
sumber
ServerAliveInterval
di file konfigurasi saya sebelumnya .Jawaban dari Barthelemy keren tapi tidak benar-benar sampai ke akar masalahnya. Anda menangguhkan mesin Anda dan ingin agar sesi SSH tetap hidup saat Anda menyalakan komputer Anda.
Tidak ada konfigurasi untuk ssh yang akan membuat koneksi tetap hidup seperti itu. SSH menggunakan TCP, untuk permulaan Anda membutuhkan jabat tangan tiga arah dan kemudian tetap hidup setelah beberapa waktu menganggur. Ketika Anda mematikan / hibernasi, semua koneksi TCP Anda ditutup dengan FIN. Tidak ada cara untuk mengatasinya.
Untuk penyelesaian yang kotor, Anda dapat menggunakan VPS atau kotak daring lainnya dengan layar untuk menjaga koneksi. Saran saya jangan lakukan itu untuk alasan keamanan.
sumber
Karena Anda tidak dapat menjamin bahwa koneksi SSH (menjadi TCP) akan tetap hidup setelah salah satu ujungnya berhenti mengirim ACK ke paket yang diterima, saya pribadi menggunakan http://www.harding.motd.ca/autossh/ untuk memulai kembali semua koneksi SSH saya hampir segera setelah saya tidak menunda pengeluaran.
Karena Layar GNU akan digunakan di sisi server, melampirkan kembali membuat saya ke tempat saya sebelumnya.
Anda dapat memilikinya mendengarkan pada port tambahan sehingga terus memeriksa koneksi masih hidup, tetapi secara pribadi saya merasa itu bekerja dengan cukup baik dengan yang dinonaktifkan dan hanya mengandalkan SSH sendiri
ServerAliveInterval
/ServerAliveCountMax
.Opsi lain adalah http://mosh.mit.edu/ yang menggunakan UDP dan pulih dari ketiadaan konektivitas dalam jangka panjang.
sumber
Anda juga dapat menjalankan perintah
nohup
jika Anda ingin menjalankannya terlepas dari koneksi SSH Anda.misalnya
$ nohup tar -xzf some_huge.tar.gz &
Ini
&
, saya pikir, tidak perlu, tetapi lebih nyaman karena membuat proses berjalan di latar belakang sehingga Anda dapat melakukan hal-hal lain.Saya selalu menggunakan nohup untuk proses apa pun yang membutuhkan waktu, sehingga saya tidak perlu memulai lagi jika saya kehilangan koneksi karena alasan apa pun - pemadaman listrik (di lokasi terpencil saya, jelas bukan di host), pemadaman jaringan, apa pun.
sumber
zsh
pengguna harus tetap dengandisown -h
alih - alihnohup
, kecuali masalahnya sudah diperbaiki sejak saat itu.Letakkan sesi lama Anda di dalam layar Lihat layar -h untuk detailnya
Dengan begitu Anda dapat menghubungkan kembali ke mesin menggunakan ssh dan pasang kembali ke sesi layar
sumber