Ketika saya menutup MacBook saya dengan sesi SSH aktif di Terminal dan kemudian membangunkannya, prompt tidak merespons.
Dalam sekitar lima menit tertulis
Write failed: Broken pipe
dan berakhir.
Ini juga terjadi ketika saya tidak mengetik apa pun di Terminal dalam waktu sekitar lima belas menit.
Bisakah saya memaksa OS X untuk:
- Pertahankan koneksi SSH tetap hidup untuk waktu terpanjang
- Bunuh segera setelah menjadi tidak responsif
?
~.
, tip yang bagus! Tetapi apa yang sebenarnya dilakukannya?ssh_config
ada/etc/ssh/ssh_config
di Mac OS X. Saya akan mengedit sendiri jawabannya, tetapi saya tidak punya cukup perwakilan di situs ini untuk melakukannya.Kamu bisa:
Konfigurasikan sistem Anda, seluruh sistem, untuk semua koneksi Dengan mengedit: / etc / ssh / ssh_config Dan tambahkan baris:
Atau, per-server ~ / .ssh / config
Apa yang pada dasarnya ini ia lakukan mengirim paket tetap hidup, setiap 10 detik ...
sumber
Anda juga dapat mencoba menggunakan proyek mosh yang mengagumkan . Itu akan dengan anggun menangani kehilangan jaringan, mesin akan tidur, dll dan dengan senang hati memulihkan koneksi ketika Anda memiliki jaringan yang berfungsi lagi.
Solusi lain yang lebih dihargai adalah menggunakan tmux pada mesin jarak jauh. Dalam hal ini Anda mungkin masih mendapatkan pipa yang rusak, tetapi jika Anda menghubungkan kembali shell Anda dan aplikasi akan menunggu tepat ketika Anda meninggalkannya.
sumber
Berbagai jawaban di sini bertentangan mengenai jalur persis ke file konfigurasi. Mungkin berbeda di berbagai unix? Saya sarankan membaca halaman manual pada sistem Anda!
Di man ssh (1) , cari teks: config . Di sistem saya, saya memiliki pilihan file konfigurasi sistem-lebar atau pengguna-ini (dan jalurnya sangat berbeda).
Di man ssh_config (5) , cari teks: hidup . Pada sistem saya, sepertinya saya perlu mengatur ServerAliveInterval dan ServerAliveCountMax .
Apa yang berhasil bagi saya, di macOS 10.12 Sierra, adalah untuk meletakkan dua baris berikut di ~ / .ssh / config:
Sekarang saya dapat ssh ke server Ubuntu 16.04 saya tanpa putuskan selama 20 * 180 detik = 1 jam. Membuatku bahagia!
sumber
Secara otomatis menyambungkan kembali ssh setelah tidur atau gangguan wifi
Instal autossh dari MacPorts atau Homebrew:
brew install autossh
Buka Terminal dan jalankan
autossh -M 20000 -f [SSH ARGUMENTS GO HERE]
Putuskan koneksi wifi Anda atau matikan Mac Anda.
Ketika Anda terhubung kembali ke wifi, sesi ssh akan secara otomatis terhubung kembali.
Secara otomatis ssh setelah masuk
Jon Stacey menulis posting blog tentang secara otomatis mengaktifkan sesi ssh ketika Anda login.
Instal autossh dari MacPorts atau Homebrew:
brew install autossh
Buat alur kerja Automator dengan skrip bash.
sumber
Tambahkan dua baris ini ke
/etc/ssh/ssh_config
:sumber
Baru saja menyelesaikan masalah ini, tambahkan baris berikut ini di
$HOME/.ssh/config
.Pengaturan
TCPKeepAlive no
memberi tahu klien untuk hanya menganggap koneksi masih baik sampai dibuktikan sebaliknya oleh permintaan pengguna, yang berarti bahwa koneksi sementara terputus saat istilah ssh Anda sedang diam di latar belakang tidak akan mematikan koneksi.sumber