it-swarm-id.com

Cara menghubungkan kembali ke sesi ssh terputus

Apakah ada cara untuk terhubung ke sesi ssh yang terputus? Kami mengalami masalah dengan koneksi jaringan kami ke situs jarak jauh yang sedang kami kerjakan secara terpisah; namun, sementara itu kami mengalami sejumlah besar pemutusan karena paket yang hilang saat terhubung ke server di lokasi yang jauh. Sering kali sesi tetap aktif untuk sementara waktu, dan kadang-kadang terjadi di tengah-tengah beberapa tindakan (mengedit file, menjalankan beberapa proses, dll ...) yang saya butuhkan untuk kembali daripada memulai kembali jika mungkin.

164
palehorse

PEMBARUAN: Untuk jawaban aktual, lihat jawaban zero_r di bawah

Ini bukan jawaban, tetapi solusi. Gunakan layar .

Saat pertama kali masuk, jalankan layar. Anda mendapatkan Shell lain, jalankan perintah di dalamnya. Jika Anda terputus, proses layar menjaga terminal tetap hidup sehingga Shell Anda dan proses yang sedang berjalan tidak jatuh. Saat Anda terhubung kembali, jalankan 'layar -r' untuk melanjutkan.

Ada banyak lagi yang harus dikonfigurasikan dan menggunakan layar, tetapi hal di atas seharusnya bisa menyelesaikan masalah Anda.

142
kbyrd

Coba setel ClientAliveInterval (mis. 60) dan TCPKeepAlive (ya atau tidak) ke nilai yang sesuai di sisi server sshd.conf.

Ini akan membuat sesi Anda tetap hidup bahkan jika koneksi hilang selama beberapa menit.

134
zero_r

Seperti disebutkan di atas, Layar GN adalah caranya. Ini akan memungkinkan Anda untuk memiliki 'sesi layar' pada kotak jarak jauh di mana Anda dapat menjalankan banyak perintah, melalui banyak 'layar windows'. Ini hanya akan melepaskan jika koneksi SSH orang tua Anda mati, menjaga semua subproses berjalan di dalamnya hidup dan sehat.

'man screen 'adalah teman Anda seperti biasa, dan paket OS harus disebut' screen 'jika tidak diinstal secara default.

Dasar-dasarnya adalah:

  • Mulai sesi layar (pada Host jarak jauh Anda):

    $ screen
    
  • Putuskan sambungan dari sesi layar Anda: CTRL-Ad

  • Sambungkan kembali ke sesi layar Anda setelah masuk kembali:

    $ screen -d -r
    
  • Buka 'jendela' layar lain: CTRL-Ac

  • Siklus melalui Anda membuka jendela layar: CTRL-Aspace

Ada banyak hal-hal keren yang dapat Anda lakukan dengan Layar. Saya telah menggunakannya selama lebih dari 10 tahun, dan masih mencari tahu fitur-fitur baru. Ini utilitas Unix favorit saya.

64
Mike Pountney

Saya tidak percaya tidak ada yang menyebutkan MOSH ;

Mosh adalah protokol terpisah yang dapat menghubungkan ke proses login SSH, itu membuat sesi Anda tetap hidup setelah berhari-hari terputus, mengubah IP, latensi tinggi dan sebagainya. Itu dijelaskan di halaman rumah lebih baik daripada yang bisa saya jelaskan sehingga saya telah menyalin deskripsi di bawah ini. Pengalaman dan saran saya adalah saya menggunakannya di Android ponsel saya, ini lebih hemat saat bepergian dan SSH'ing. Hal yang sama berlaku pada laptop saya ketika ditambatkan dengan ponsel di kereta misalnya) Saya merekomendasikan kompilasi dari sumber untuk mendapatkan versi terbaru, versi repo untuk saya di dalam Ubuntu memiliki beberapa gangguan di dalamnya yang diperbaiki dalam versi terbaru (pada saat penulisan).

Mosh (Shell ponsel)

Aplikasi terminal jarak jauh yang memungkinkan roaming, mendukung konektivitas intermiten, dan menyediakan gema lokal yang cerdas dan pengeditan garis penekanan tombol pengguna.

Mosh adalah pengganti SSH. Ini lebih kuat dan responsif, terutama melalui Wi-Fi, seluler, dan sambungan jarak jauh.

Mosh adalah perangkat lunak gratis, tersedia untuk GNU/Linux, FreeBSD, Solaris, Mac OS X, dan Android.

Fitur dari situs web:

  • Ubah IP. Tetap terhubung : Mosh otomatis menjelajah saat Anda bergerak di antara koneksi Internet. Gunakan Wi-Fi di kereta, Ethernet di hotel, dan LTE di pantai: Anda akan tetap masuk. Sebagian besar program jaringan kehilangan koneksi setelah roaming, termasuk SSH dan aplikasi Web seperti Gmail. Mosh berbeda.

  • Membuat mimpi indah : Dengan Mosh, Anda dapat membuat laptop Anda tidur dan membangunkannya nanti, menjaga koneksi Anda tetap utuh. Jika koneksi Internet Anda turun, Mosh akan memperingatkan Anda - tetapi koneksi kembali ketika layanan jaringan kembali.

  • Singkirkan jeda jaringan : SSH menunggu balasan server sebelum menunjukkan kepada Anda mengetik sendiri. Itu bisa membuat antarmuka pengguna yang buruk. Mosh berbeda: ia memberikan respons instan untuk mengetik, menghapus, dan mengedit garis. Itu melakukan ini secara adaptif dan bekerja bahkan dalam program layar penuh seperti emacs dan vim. Pada koneksi yang buruk, prediksi luar biasa digarisbawahi sehingga Anda tidak akan disesatkan.

  • Tidak ada kode istimewa. Tanpa daemon : Anda tidak perlu menjadi pengguna super untuk menginstal atau menjalankan Mosh. Klien dan server adalah executable yang dijalankan oleh pengguna biasa dan hanya berlangsung selama umur koneksi.

  • Metode login yang sama : Mosh tidak mendengarkan port jaringan atau mengautentikasi pengguna. Klien mosh masuk ke server melalui SSH, dan pengguna menyajikan kredensial yang sama (mis., Kata sandi, kunci publik) seperti sebelumnya. Kemudian Mosh menjalankan mosh-server dari jarak jauh dan menghubungkannya melalui UDP.

  • Berjalan di dalam terminal Anda, tetapi lebih baik : Mosh adalah program baris perintah, seperti ssh. Anda dapat menggunakannya di dalam xterm, gnome-terminal, urxvt, Terminal.app, iTerm, emacs, layar, atau tmux. Tapi mosh dirancang dari awal dan hanya mendukung satu set karakter: UTF-8. Ini memperbaiki bug Unicode di terminal lain dan di SSH.

  • Control-C berfungsi dengan baik : Tidak seperti SSH, protokol berbasis UDP mosh menangani kehilangan paket dengan anggun, dan menetapkan frame rate berdasarkan kondisi jaringan. Mosh tidak mengisi buffer jaringan, jadi Control-C
    selalu bekerja untuk menghentikan proses pelarian.

47
jwbensley

autossh mengawasi koneksi Anda dan jika turun, koneksi kembali. Ini lebih dapat diandalkan daripada keepalives. Jika Anda terhubung ke sesi layar, Anda akan melanjutkan langsung dari tempat Anda terputus (lihat rscreen yang datang dengan autossh)

20
hayalci

tmux

Yang ini klasik. Gunakan setiap kali Anda berisiko kehilangan koneksi ke terminal.

$ tmux
$ sh do_something_that_takes_forever

!! Connection fails so you reconnect once you notice

$ tmux ls
0: 1 windows (created Tue Aug 23 12:39:52 2011) [103x30]

$ tmux attach -t 0

Sama seperti itu, Anda kembali beraksi.

14
Jacksonkr

Saya akan menginstal dan memulai layar untuk memperbaiki masalah Anda. Layar akan memungkinkan Anda terhubung kembali ke sesi layar sebelumnya.

Selain itu, layar juga memungkinkan Anda melakukan hal-hal keren seperti membagi layar, melihat konsol, dll. Anda dapat menemukan lebih banyak info di sini dan di sini .

Sebagai permulaan, jika Anda terputus, Anda dapat menggunakan

screen -ls

untuk melihat sesi Anda dan

screen -r ${session} 

untuk menyambung kembali ke yang terputus.

10
wzzrd

Seperti yang telah ditunjukkan oleh orang lain, layar pada umumnya merupakan solusi terbaik untuk ini dan ia menambahkan sejumlah fitur yang berguna juga.

Anda dapat mengatur profil Anda pada mesin jarak jauh untuk secara otomatis memulai dan/atau menyambung kembali ke layar saat login, yang membuat Anda lupa untuk memulai layar pada saat Anda membutuhkannya karena Anda mengalami penurunan koneksi.

Lihat http://tlug.dnho.net/?q=node/239 (atau cari Google untuk banyak contoh lain dengan cara yang sedikit berbeda).

4
David Spillett

Berikut ini adalah solusi non-layar lainnya.

Baki Putty memungkinkan Anda untuk melakukan hal itu, ia memiliki koneksi ulang pada opsi putuskan yang tidak biasa atau Putty-ng

https://puttytray.goeswhere.com/

itu adalah garpu (sepenuhnya open source) dari Putty dengan opsi lain, pergi ke pengaturan koneksi dan ada 2 pilihan, satu untuk 'upaya untuk menyambung kembali pada kegagalan koneksi', dan 'upaya untuk menghubungkan kembali pada startup'.

3
munkiepus

alternatif yang lebih modern untuk layar, sayangnya tidak tersedia untuk beberapa jenis "virtualisasi" (misalnya di cygwin Anda dapat memiliki "layar", tetapi tidak "tmux" karena cara itu dirancang), tetapi di mana pun Anda memiliki pilihan untuk menginstal tmux , Saya sangat merekomendasikan untuk menggunakan insted layar itu.

3
cepal

Sementara layar akan membuat sesi Shell Anda terbuka di server jauh jika sesi ssh Anda turun, itu tidak akan melakukan apa-apa tentang masalah koneksi ssh yang terputus. Seperti yang disarankan zero_r, coba tuning koneksi ssh Anda dengan tetap hidup dan batas waktu lama.

Saya sarankan Anda melacak penyebab hilangnya paket yang menyebabkan masalah dan memperbaikinya alih-alih mengatasinya.

2
David

Terkadang saya lupa untuk menjalankan layar juga dan kehilangan pekerjaan saya yang belum selesai. Dalam hal ini, meskipun kami tidak dapat memasang kembali ke sesi SSH yang rusak, memperbaiki program yang sedang berjalan ke terminal baru dan melanjutkan apa yang Anda lakukan masih dimungkinkan berkat reptyr.

Setelah tidak sengaja terputus dari sesi SSH, hal pertama yang pertama adalah menjalankan screen jangan sampai koneksi terputus lagi. Kemudian di sesi baru, jalankan ps aux | grep {The process to be resumed} untuk mendapatkan PID. Dengan PID, Anda dapat mencoba reptyr {PID} atau reptyr -T {PID} (jika ada subproses) untuk melanjutkan pekerjaan.

2
march_happy