Proses SSH tidak Dibunuh pada Mesin Jarak Jauh ketika Sistem Jarak Jauh Tiba-tiba Putus

8

Saya memiliki pertanyaan yang belum dapat saya temukan jawabannya. Saya memiliki dua komputer, keduanya menjalankan Ubuntu 12.04. Saya menyimpan salah satu komputer saya di rumah dan menggunakan SSH untuk menghubungkannya dari komputer lain ("jarak jauh"). Komputer jarak jauh dapat terhubung ke komputer di rumah tanpa masalah. Komputer jarak jauh juga memiliki SetAliveInterval diatur ke 60 di / etc / ssh / ssh_config, sehingga koneksi tidak mati jika saya menjauh dari komputer sejenak.

Kadang-kadang, koneksi internet saya di komputer jarak jauh saya terganggu. Gangguan internet menyebabkan terowongan SSH saya menutup (tentu saja). Ketika saya mengembalikan konektivitas internet dan menghubungkan kembali ke komputer rumah menggunakan terowongan SSH baru, saya bisa melihat #ps axbahwa proses koneksi SSH lama masih berjalan. Ini adalah masalah karena saya menggunakan direktori rumah terenkripsi di komputer rumah, yang tidak memungkinkan file untuk dienkripsi ulang sampai koneksi SSH (sekarang-mati) terputus.

Apakah ada cara untuk mengatur sshd_config pada komputer di rumah sehingga secara otomatis mendeteksi ketika koneksi telah mati, dan menghentikannya?

JL
sumber

Jawaban:

5

Coba layar atau tmux . Di sisi server, atau kedua sisi jika Anda suka:

sudo apt-get install tmux

Setelah masuk, mulai tmux .

tmux

Jika koneksi terputus, masuk kembali melalui ssh dan hubungkan kembali sesi tmux . Untuk menemukan nomor sesi:

tmux ls

Outputnya mungkin seperti ini:

0: 1 windows (dibuat Selasa 25 Des 19:20:40 2012)

Hubungkan ke sesi bernomor tmux seperti ini:

tmux attach -t 0

Maka Anda segera kembali ke tempat Anda meninggalkannya. Anda tidak harus membunuh sesi. Mereka hanya menunggu kunjungan Anda berikutnya. Atau, jika Anda hanya ingin membunuh sesi ...

Di sisi server, lihat /etc/ssh/sshd_configpengaturan untuk ClientAliveInterval dan ClientAliveCountMax . ( man 5 ssh_config)

ClientAliveInterval 300
ClientAliveCountMax 0

Setelah mereka diubah ke preferensi Anda, restart server SSH.

sudo /etc/init.d/ssh restart

300 adalah detik (lima menit).


sumber
Ini persis apa yang saya cari! Saya akan mulai dengan ClientAliveInterval, dan pasti juga akan mencoba tmux. Terima kasih!
JL
1
Pilihan ketiga selain Screen dan Tmux adalah Byobu : Situs web , Wikipedia . Dari situs web: "Ini pada awalnya dirancang untuk memberikan peningkatan yang elegan pada Layar GNU yang fungsional, polos, praktis, untuk distribusi server Ubuntu. Byobu sekarang termasuk profil yang disempurnakan, ikatan kunci yang nyaman, utilitas konfigurasi, dan pemberitahuan status sistem yang dapat diaktifkan sistem untuk manajer jendela Layar GNU dan multiplexer terminal Tmux yang lebih modern, dan berfungsi pada sebagian besar distribusi Linux, BSD, dan Mac. "
sierrasdetandil
1

Anda dapat mencoba moshPasang mosh , pengganti SSH yang dibangun di atas SSH. Ini mendukung dan roaming dan konektivitas terputus-putus, sehingga sesi Mosh (SSH) Anda hanya akan melanjutkan di mana Anda tinggalkan setiap kali koneksi Internet Anda dibangun kembali setelah gangguan.

Anda perlu menginstal Mosh di kedua mesin.

Referensi:

Flimm
sumber