Pertanyaan Cara menyambung kembali ke sesi ssh yang terputus


Apakah ada cara untuk terhubung ke sesi ssh yang terputus? Kami mengalami masalah dengan koneksi jaringan kami ke situs remote yang kami kerjakan secara terpisah; Namun, dalam waktu yang berarti kami mengalami banyak pemutusan karena paket hilang ketika terhubung ke server di lokasi terpencil. Banyak kali sesi tetap aktif untuk sementara waktu, dan kadang-kadang terjadi di tengah-tengah beberapa tindakan (pengeditan file, menjalankan beberapa proses, dll ...) yang saya perlukan untuk kembali daripada memulai kembali jika memungkinkan.


141
2018-06-04 13:04




Saya tidak percaya tidak ada yang menyebutkan mosh.mit.edu - jwbensley
@javano: Saya belum pernah mendengarnya. Tambahkan itu sebagai jawaban! - kbyrd
@kbyrd Telah selesai;) - jwbensley
pertanyaan serupa ditanyakan unix.stackexchange.com/questions/105001/… dengan beberapa petunjuk bagaimana cara mengatasi pemutusan di tempat pertama ... - anarcat


Jawaban:


UPDATE: Untuk jawaban yang sebenarnya, lihat jawaban zero_r di bawah ini

Ini bukan jawaban, tapi solusi. Menggunakan layar.

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

Ada banyak hal yang perlu dikonfigurasikan dan menggunakan layar, tetapi hal di atas harus mengatasi masalah Anda.


126
2018-06-04 13:08



Atau gunakan tmux - layar 'dingin', saya telah menggunakan keduanya dan lebih suka tmux karena Anda dapat membagi istilah dengan baik. - John Hunt
Saya senang menemukan screen sudah terinstal di Ubuntu 12.x saya jadi jika Anda tidak yakin hanya mencoba perintah ini, itu terhubung kembali dan melanjutkan lakukan-rilis-upgrade proses: layar sudo -D -r - bjm88
@ bjm88, sudo sebaiknya digunakan hanya jika sesi layar asli dimulai dengan sudo. Jika tidak, itu akan kembali seolah-olah tidak ada sesi layar: There is no screen to be detached - Noam Manos


Cobalah untuk mengatur ClientAliveInterval (misalnya 60) dan TCPKeepAlive (ya atau tidak) ke nilai yang sesuai pada sshd.conf serverside.

Ini akan membuat sesi Anda tetap hidup meskipun koneksi terputus selama beberapa menit.


118
2018-06-04 13:08



Sejauh ini, Anda tampaknya menjadi satu-satunya yang benar-benar menjawab pertanyaan daripada menyarankan layar sebagai solusi. - kbyrd
Panggilan yang bagus. Kami telah menemukan metode ini sangat berguna ketika melintasi firewall cisco ASA / PIX, yang secara default suka waktu keluar koneksi tcp. - Mike Pountney
Mungkin ini bukan tempat yang tepat untuk bertanya, tetapi apakah mungkin bagi poster untuk beralih jawaban? Kita harus menjawab 'layar' (milik saya bukan yang terbaik, saya suka Mike Pountney, tapi saya mendapatkan perwakilannya) dengan informasi ini. - kbyrd
Apakah ini berfungsi ketika terhubung melalui koneksi Cisco VPN, dan koneksi VPN hilang dan dibangun kembali? - Brent
bagi saya layar berfungsi sempurna, saya dapat menyambung kembali ke tugas dan hitungan yang disaring untuk bekerja - integratorIT


Seperti yang disebutkan di atas, Layar GNU adalah cara untuk pergi. Ini akan memungkinkan Anda untuk memiliki 'sesi layar' pada kotak remote yang Anda dapat menjalankan beberapa perintah, melalui beberapa 'jendela layar'. Ini hanya akan melepaskan jika koneksi SSH orangtua Anda mati, menjaga semua subproses yang berjalan di dalamnya hidup dan baik.

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

Dasar-dasar adalah:

  • Mulai sesi layar (di host jarak jauh Anda):

    $ screen
    
  • Putuskan sambungan dari sesi layar Anda: CTRL-A, d

  • Hubungkan kembali ke sesi layar Anda setelah masuk kembali:

    $ screen -d -r
    
  • Buka layar lain 'jendela': CTRL-A, c

  • Siklus melalui jendela layar yang terbuka: CTRL-A, ruang

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


59
2018-06-04 13:19



Ya, ini adalah jawaban yang jauh lebih baik dari saya. - kbyrd
Dapatkah saya tetap terhubung ke sesi ssh yang terputus, jika saya me-reboot komputer saya di mana layar sedang berjalan? - BarathVutukuri


Saya tidak percaya tidak ada yang menyebutkan MOSH;

Mosh adalah protokol terpisah yang dapat menghubungkan proses login SSH, membuat sesi Anda tetap hidup setelah beberapa hari terputus, mengubah IP, latensi tinggi, dan sebagainya. Hal ini dijelaskan pada halaman rumah lebih baik daripada yang saya dapat menjelaskannya jadi saya telah menyalin uraian di bawah ini. Pengalaman dan saran saya adalah bahwa saya menggunakannya di ponsel Android saya, ini adalah penyelamat hidup saat bepergian dan SSH. Hal yang sama berlaku di laptop saya ketika tertambat 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 intermiten   konektivitas, dan menyediakan pengeditan lokal yang cerdas dan pengeditan baris   keystroke pengguna.

Mosh adalah pengganti SSH. Lebih kuat dan responsif,   terutama melalui tautan Wi-Fi, seluler, dan 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 antara koneksi internet. Gunakan Wi-Fi di kereta, Ethernet dalam hotel, dan LTE di pantai: Anda akan tetap masuk. Sebagian besar jaringan program kehilangan koneksi mereka setelah roaming, termasuk SSH dan Web aplikasi seperti Gmail. Mosh berbeda.

  • Buat mimpi indah: Dengan Mosh, Anda dapat meletakkan laptop Anda untuk tidur dan membangunkannya nanti, menyimpannya koneksi utuh. Jika koneksi internet Anda turun, Mosh akan memperingatkan Anda - tetapi koneksi dilanjutkan ketika layanan jaringan kembali.

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

  • Tidak ada kode istimewa. Tidak ada daemon: Anda tidak perlu menjadi superuser untuk menginstal atau menjalankan Mosh. Klien dan server executable yang dijalankan oleh pengguna biasa dan hanya bertahan selama masa koneksi.

  • Metode masuk yang sama: Mosh tidak mendengarkan di port jaringan atau mengautentikasi pengguna. Klien mosh masuk ke server melalui SSH, dan pengguna menampilkan kredensial yang sama (mis., kata sandi, kunci publik) seperti sebelumnya. Kemudian Mosh menjalankan mosh-server dari jauh dan menghubungkannya ke 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, mosh's UDP-based protocol menangani packet loss dengan anggun, dan mengatur frame menilai berdasarkan kondisi jaringan. Mosh tidak mengisi buffer jaringan, jadi Control-C
    selalu bekerja untuk menghentikan proses pelarian.


41
2017-11-24 13:01



Mosh bukan pembungkus ssh - protokol yang berbeda, hampir sepenuhnya tidak terkait dengan ssh (hanya menggunakan ssh untuk masuk). - jch
+1 Sangat benar, kesalahan saya. - jwbensley
Bagaimana dengan keamanan, pria di tengah? enkripsi? pertukaran kunci? - Nasir Iqbal


autossh mengawasi koneksi Anda dan jika koneksi 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)


19
2018-06-06 09:11



di luar tetap hidup-dikonfigurasi, itu tidak secara inheren memungkinkan Anda untuk menyambung kembali ke sesi (apa yang OP cari). tetapi autossh dapat sangat membantu untuk aplikasi yang membutuhkan terowongan ssh, pemetaan port, dll. - ives
ya autossh + layar akan menjadi sweet spot. autossh memiliki rscreenuntuk ini. - hayalci
Autossh lebih baik daripada mosh. Saya telah menggunakan keduanya. - Sridhar-Sarnobat
Berikut adalah posting blog oleh Jesse Keating, tentang penggunaan autossh dengan layar. - sampablokuper


Saya akan menginstal dan memulai layar untuk memperbaiki masalah Anda. Layar akan membiarkan 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 info lebih lanjut sini dan sini.

Sebagai permulaan, jika Anda terputus, Anda dapat menggunakan

screen -ls

untuk melihat sesi Anda dan

screen -r ${session} 

untuk terhubung kembali dengan yang terputus.


9
2018-06-04 13:06





tmux

Yang ini klasik. Gunakan ini setiap kali Anda menjalankan risiko 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, kamu kembali beraksi.


9
2018-04-06 01:24



Terima kasih banyak! Saya sedang mencari cara melakukan ini dengan tmux, karena tampaknya itulah yang dianggap oleh kebanyakan orang sebagai opsi yang lebih baik. - CoolOppo


Seperti yang telah disebutkan orang lain, layar pada umumnya merupakan solusi terbaik untuk ini dan itu juga menambahkan sejumlah fitur berguna lainnya.

Anda dapat mengatur profil Anda pada mesin remote untuk secara otomatis memulai dan / atau menyambung kembali ke layar saat login, yang menyelamatkan Anda lupa untuk mulai layar satu kali 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).


3
2018-06-04 13:47



Script yang bagus di tautan itu, terima kasih! - palehorse