GNU/Linux >> Belajar Linux >  >> Linux

5 Cara untuk Menjaga Sesi dan Proses SSH Jarak Jauh Berjalan Setelah Terputus

SSH atau Secure Shell dalam istilah sederhana adalah cara seseorang dapat mengakses pengguna lain dari jarak jauh di sistem lain tetapi hanya dalam baris perintah yaitu mode non-GUI. Dalam istilah yang lebih teknis, ketika kita ssh ke pengguna lain di beberapa sistem lain dan menjalankan perintah di mesin itu, itu sebenarnya membuat terminal semu dan menempelkannya ke shell login pengguna yang login.

Saat kita keluar dari sesi atau waktu sesi habis setelah tidak digunakan selama beberapa waktu, SIGHUP sinyal dikirim ke terminal semu dan semua pekerjaan yang telah dijalankan di terminal itu, bahkan pekerjaan yang pekerjaan induknya dimulai di terminal semu juga dikirimi sinyal SIGHUP dan dipaksa untuk dihentikan.

Jangan' t Nona: 5 Praktik Berguna untuk Menjaga Server SSH Aman dan Terlindungi

Hanya pekerjaan yang telah dikonfigurasi untuk mengabaikan sinyal ini yang bertahan dari penghentian sesi. Pada sistem Linux, kita dapat memiliki banyak cara untuk membuat pekerjaan ini berjalan di server jarak jauh atau mesin apa pun bahkan setelah pengguna logout dan penghentian sesi.

Memahami Proses di Linux

Proses Normal

Proses normal adalah proses yang memiliki rentang hidup sesi. Mereka dimulai selama sesi sebagai proses latar depan dan berakhir dalam rentang waktu tertentu atau saat sesi keluar. Proses ini memiliki pemiliknya sebagai salah satu pengguna sistem yang valid, termasuk root.

Proses Yatim

Orphan proses adalah mereka yang awalnya memiliki orang tua yang membuat proses tetapi setelah beberapa waktu, proses induk secara tidak sengaja mati atau macet, menjadikan init menjadi induk dari proses itu. Proses tersebut memiliki init sebagai induk langsungnya yang menunggu proses ini sampai proses tersebut mati atau berakhir.

Proses Daemon

Ini adalah beberapa proses yang sengaja ditinggalkan, proses seperti itu yang sengaja dibiarkan berjalan pada sistem disebut sebagai daemon atau proses yang sengaja ditinggalkan. Mereka biasanya merupakan proses yang berjalan lama yang pernah dimulai dan kemudian dilepaskan dari terminal pengontrol apa pun sehingga mereka dapat berjalan di latar belakang sampai tidak selesai, atau berakhir dengan kesalahan. Induk dari proses tersebut dengan sengaja mati membuat anak dieksekusi di latar belakang.

Teknik untuk Menjaga Sesi SSH Tetap Berjalan Setelah Diputuskan

Ada berbagai cara untuk membiarkan sesi ssh berjalan setelah pemutusan seperti yang dijelaskan di bawah ini:

1. Menggunakan Perintah layar untuk Menjaga Sesi SSH Tetap Berjalan

layar adalah Pengelola Jendela teks untuk Linux yang memungkinkan pengguna untuk mengelola beberapa sesi terminal pada saat yang sama, beralih antar sesi, pencatatan sesi untuk sesi yang sedang berjalan di layar, dan bahkan melanjutkan sesi kapan saja kita inginkan tanpa khawatir sesi akan keluar atau terminal ditutup.

sesi layar dapat dimulai dan kemudian dilepaskan dari terminal pengontrol membiarkannya berjalan di latar belakang dan kemudian dilanjutkan kapan saja dan bahkan di mana saja. Anda hanya perlu memulai sesi Anda di layar dan kapan pun Anda mau, lepaskan dari terminal semu (atau terminal pengontrol) dan keluar. Ketika Anda merasa, Anda dapat masuk kembali dan melanjutkan sesi.

Memulai Sesi layar

Setelah mengetik 'layar' perintah, Anda akan berada di sesi layar baru, dalam sesi ini Anda dapat membuat jendela baru, melintasi antar jendela, mengunci layar, dan melakukan lebih banyak hal yang dapat Anda lakukan di terminal normal.

$ screen

Setelah sesi layar dimulai, Anda dapat menjalankan perintah apa pun dan menjaga sesi tetap berjalan dengan melepaskan sesi.

Melepaskan Layar

Tepat ketika Anda ingin keluar dari sesi jarak jauh, tetapi Anda ingin menjaga sesi yang Anda buat pada mesin itu tetap hidup, maka yang perlu Anda lakukan adalah melepaskan layar dari terminal sehingga tidak ada lagi terminal pengontrol yang tersisa. Setelah melakukan ini, Anda dapat keluar dengan aman.

Untuk melepaskan layar dari terminal jarak jauh, cukup tekan “Ctrl+a” langsung diikuti oleh “d” dan Anda akan kembali ke terminal melihat pesan bahwa Layar terlepas. Sekarang Anda dapat keluar dengan aman dan sesi Anda akan tetap hidup.

Melanjutkan Sesi Layar Terpisah

Jika Anda ingin Melanjutkan sesi layar terpisah yang Anda tinggalkan sebelum logout, login kembali ke terminal jarak jauh lagi dan ketik “screen -r” jika hanya satu layar yang dibuka, dan jika beberapa sesi layar dibuka, jalankan “screen -r <pid.tty.host>” .

$ screen -r
$ screen -r <pid.tty.host>

Untuk mempelajari lebih lanjut tentang perintah layar dan cara menggunakannya cukup ikuti tautan:Gunakan Perintah layar untuk Mengelola Sesi Terminal Linux

2. Menggunakan Tmux (Terminal Multiplexer) agar Sesi SSH Tetap Berjalan

Tmux adalah perangkat lunak lain yang dibuat untuk menggantikan layar . Ini memiliki sebagian besar kemampuan layar , dengan beberapa kemampuan tambahan yang membuatnya lebih kuat daripada layar.

Ini memungkinkan, terlepas dari semua opsi yang ditawarkan oleh layar, membagi panel secara horizontal atau vertikal di antara beberapa jendela, mengubah ukuran panel jendela, pemantauan aktivitas sesi, skrip menggunakan mode baris perintah, dll. Karena fitur tmux ini, telah menikmati adopsi luas oleh hampir semua distribusi Unix dan bahkan telah disertakan dalam sistem dasar OpenBSD.

Mulai Sesi Tmux

Setelah melakukan ssh pada remote host dan mengetik tmux , Anda akan memasuki sesi baru dengan jendela baru yang terbuka di depan Anda, di mana Anda dapat melakukan apa pun yang Anda lakukan di terminal normal.

$ tmux

Setelah melakukan operasi Anda di terminal, Anda dapat melepaskan sesi itu dari terminal pengontrol sehingga masuk ke latar belakang dan Anda dapat keluar dengan aman.

Lepaskan Sesi Tmux dari Terminal

Anda dapat menjalankan “tmux detach” saat menjalankan sesi tmux atau Anda dapat menggunakan pintasan (Ctrl+b then d) . Setelah ini, sesi Anda saat ini akan dilepaskan dan Anda akan kembali ke terminal dari mana Anda dapat keluar dengan aman.

$ tmux detach
Melanjutkan Sesi Tmux Tertutup

Untuk membuka kembali sesi yang Anda lepaskan dan tinggalkan seperti saat Anda keluar dari sistem, cukup masuk kembali ke mesin jarak jauh dan ketik “tmux attach” untuk memasang kembali ke sesi tertutup dan itu akan tetap ada dan berjalan.

$ tmux attach

Untuk mempelajari lebih lanjut tentang tmux dan cara menggunakannya cukup ikuti tautan:Gunakan Tmux Terminal Multiplexer untuk Mengelola Beberapa Terminal Linux.

3. Menggunakan perintah nohup untuk Tetap Menjalankan Sesi SSH

Jika Anda tidak begitu familiar dengan layar atau tmux , Anda dapat menggunakan nohup dan kirim perintah lama Anda ke latar belakang sehingga Anda dapat melanjutkan sementara perintah akan terus dijalankan di latar belakang. Setelah itu Anda dapat keluar dengan aman.

Dengan perintah nohup, kami memberi tahu proses untuk mengabaikan SIGHUP sinyal yang dikirim oleh sesi ssh pada penghentian, sehingga membuat perintah tetap ada bahkan setelah sesi logout. Saat sesi logout, perintah dilepaskan dari terminal pengontrol dan terus berjalan di latar belakang sebagai proses daemon.

Melaksanakan perintah menggunakan nohup di latar belakang

Di sini, adalah skenario sederhana di mana, kami telah menjalankan perintah find untuk mencari file di latar belakang pada sesi ssh menggunakan nohup, setelah itu tugas dikirim ke latar belakang dengan prompt kembali segera memberikan PID dan ID pekerjaan dari proses ([JOBID] PID) .

# nohup find / -type f $gt; files_in_system.out 2>1 &
Melanjutkan sesi untuk melihat apakah pekerjaan masih berjalan

Ketika Anda login kembali, Anda dapat memeriksa status perintah, membawanya kembali ke latar depan menggunakan 'fg %JOBID' untuk memantau kemajuannya dan sebagainya. Di bawah ini, output menunjukkan bahwa pekerjaan telah selesai karena tidak muncul saat login ulang, dan telah memberikan output yang ditampilkan.

# fg %JOBID

4. Menggunakan Perintah disown untuk Menjaga Sesi SSH Tetap Berjalan

Cara elegan lain untuk membiarkan perintah atau satu tugas Anda berjalan di latar belakang dan tetap hidup bahkan setelah sesi logout atau pemutusan adalah dengan menggunakan disown .

Menolak , menghapus pekerjaan dari daftar pekerjaan proses sistem, sehingga proses terlindung dari penghentian selama pemutusan sesi karena tidak akan menerima SIGHUP oleh shell saat Anda logout.

Kerugian dari metode ini adalah, hanya digunakan untuk pekerjaan yang tidak memerlukan input dari stdin dan tidak perlu menulis ke stdout , kecuali jika Anda secara khusus mengarahkan ulang input dan output pekerjaan, karena ketika pekerjaan akan mencoba berinteraksi dengan stdin atau stdout , itu akan berhenti.

Menjalankan perintah menggunakan disown di latar belakang

Di bawah, kami mengirim ping perintah ke latar belakang sehingga ut terus berjalan dan dihapus dari daftar pekerjaan. Seperti yang terlihat, pekerjaan pertama kali ditangguhkan, setelah itu masih dalam daftar pekerjaan sebagai ID Proses:15368 .

$ ping tecmint.com > pingout &
$ jobs -l
$ disown -h %1
$ ps -ef | grep ping

Setelah sinyal penolakan itu diteruskan ke pekerjaan, dan itu dihapus dari daftar pekerjaan, meskipun masih berjalan di latar belakang. Pekerjaan akan tetap berjalan saat Anda masuk kembali ke server jarak jauh seperti yang terlihat di bawah ini.

$ ps -ef | grep ping

5. Menggunakan Perintah setsid untuk Menjalankan Sesi SSH

Utilitas lain untuk mencapai perilaku yang diperlukan adalah setsid . Tidak apa-apa memiliki kelemahan dalam arti bahwa grup proses dari proses tetap sama sehingga proses yang berjalan dengan nohup rentan terhadap setiap sinyal yang dikirim ke seluruh grup proses (seperti Ctrl + C ).

setsid di sisi lain mengalokasikan grup proses baru ke proses yang sedang dieksekusi dan karenanya, proses yang dibuat sepenuhnya berada dalam grup proses yang baru dialokasikan dan dapat dijalankan dengan aman tanpa takut terbunuh bahkan setelah sesi logout.

Jalankan perintah apa pun menggunakan setsid

Di sini, ini menunjukkan bahwa proses ‘sleep 10m’ telah terlepas dari terminal pengontrol, sejak dibuat.

$ setsid sleep 10m
$ ps -ef | grep sleep

Sekarang, ketika Anda akan masuk kembali ke sesi, Anda masih akan menemukan proses ini berjalan.

$ ps -ef | grep [s]leep

Kesimpulan

Cara apa yang dapat Anda pikirkan untuk menjaga proses Anda tetap berjalan bahkan setelah Anda keluar dari sesi SSH? Jika ada cara lain dan efisien yang dapat Anda pikirkan, sebutkan di komentar Anda.


Linux
  1. Berbagi Sesi Terminal Linux Dengan Tmux dan Layar

  2. Penanganan Ctrl-c Dalam Sesi Ssh?

  3. Tetap Menjalankan Program Python Bahkan Setelah Keluar dari Sesi Ssh?

  1. 4 Cara Agar Perintah Tetap Berjalan Setelah Anda Keluar Dari Sesi SSH

  2. Bagaimana cara membuat daftar sesi layar yang sedang berjalan?

  3. secara otomatis memulai layar setelah login ssh

  1. Ssh – Bagaimana Cara Menyangkal Proses yang Berjalan Dan Mengaitkannya ke Shell Layar Baru?

  2. Ssh – Biarkan Proses Tetap Berjalan Setelah Sesi Ssh Terputus?

  3. Ssh – Bagaimana Cara Membuat Proses yang Saya Mulai Selama Sesi Ssh Berjalan Setelah Sesi Berakhir??