Ketika saya terhubung melalui ssh ke server tertentu, itu timeout dan "membekukan" terminal (tidak menerima input, tidak memutuskan, tidak dapat Ctrl-C untuk mematikan proses ssh atau apa pun).
Ini ada di Ubuntu, gnome-terminal
meskipun sepertinya sedang menghentikan input / output terminal, dan tidak memengaruhi operasi perangkat lunak Terminal GNOME itu sendiri. Jadi lebih sedikit bug dengan gnome-terminal
inkonsistensi menjengkelkan dengan ssh.
Jadi, adakah cara untuk mencegah / mendapatkan kembali terminal dari koneksi ssh yang telah kehabisan waktu?
ssh
terminal
timeout
gnome-terminal
Kzqai
sumber
sumber
Jawaban:
sshd (server) menutup koneksi jika tidak mendengar apa pun dari klien untuk sementara waktu. Anda dapat memberi tahu klien Anda sesekali mengirim sinyal sign-of-life ke server.
Konfigurasi untuk ini ada di file
~/.ssh/config
. Untuk mengirim sinyal setiap empat menit ke hosting jarak jauh, masukkan berikut ini di~/.ssh/config
.Inilah yang saya miliki di blog saya
~/.ssh/config
.Untuk mengaktifkannya untuk semua host gunakan:
Pastikan juga untuk menjalankan
chmod 600 ~/.ssh/config
, karena file konfigurasi tidak boleh dibaca dunia.sumber
~/.ssh/config
?Tekan Enter, ~, .satu demi satu untuk memutuskan sambungan dari sesi beku.
Bagian "ESCAPE CHARACTERS" di halaman manual ssh menjelaskan detail yang mendasarinya.
sumber
EscapeChar ~
di/etc/ssh/ssh_config
(atau~/.ssh/ssh_config
jika Anda suka).EscapeChar ~
sudah merupakan bawaan bawaan.Meskipun ini bukan jawaban langsung untuk pertanyaan Anda, itu sangat terkait dengan masalah yang Anda miliki. Alih-alih mencoba menjaga koneksi tetap hidup (semua koneksi akhirnya mati), Anda dapat menggunakan multiplexor terminal, seperti
screen
dantmux
yang membuat sesi tetap hidup di latar belakang bahkan jika terminal Anda terputus.Intinya ketika Anda masuk ke server SSH Anda segera menjalankan
screen
yang akan membuat dan melampirkan sesi baru:Kemudian Anda pergi ke depan dan melakukan pekerjaan Anda dengan shell seperti biasa. Sekarang jika koneksi terputus, ketika Anda bisa kembali online dan terhubung kembali ke server melalui SSH, Anda mendapatkan daftar sesi saat ini dengan:
Untuk memasang kembali sesi:
di mana
<session>
PID atau nama sesi. Anda akan terhubung kembali ke sesi Anda dan Anda dapat melanjutkan dari tempat Anda tinggalkan!Anda bahkan dapat melepaskan sesi dan menyambung kembali dari rumah untuk mengambil dari titik yang tepat di mana Anda tinggalkan. Untuk melepaskan sesi yang Anda gunakan
C-a
diikuti olehC-d
(thatsControl + A
kemudianControl + D
).Ada tutorial online yang sederhana juga.
Menggunakan
screen
dantmux
pada server jauh dianggap praktik terbaik dan sangat dianjurkan . Beberapa orang bahkan memilikiscreen
shell login default mereka, jadi ketika mereka terhubung mereka segera memulaiscreen
sesi baru .sumber
Coba tambahkan
-o ServerAliveInterval=30
ke string koneksi Anda (30
artinya 30 detik dan tentu saja dapat disesuaikan)sumber
Anda juga dapat mengatur interval waktu idle dari sisi server SSH:
Mengajukan:
/etc/ssh/ssh_config
Konten:
Ini bekerja dengan cara yang sama persis seperti pengaturan klien, tetapi paket nol dikirim dari dari server, bukan dari klien.
Diekstrak dari:
http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html
sumber
Untuk orang-orang yang ingin mencegah klien dari waktu keluar di tempat pertama.
Anda dapat mencoba mengatur
ConnectTimeout 0
di file konfigurasi. Nilai 0 berarti koneksi akan tetap hidup tanpa batas waktu kecuali ditutup.file config (atau ssh_config) Anda mungkin terlihat seperti ini:
sumber