Kill Remote Process saat double hop SSHing ke server


1

Saya melakukan SSH hop ganda untuk mendapatkan pertama ke server yang memiliki alamat IP publik dan membuka port SSH, kemudian SSHing ke komputer berikutnya, sambil menghubungkan port VNC lokal saya ke port sistem jarak jauh. DALAM diagram:

[Sistem Lokal Saya] --- Terowongan SSH (port 5900 forward) -> [Server] - Terowongan SSH (port 5900 forward) -> [Sistem remote]

Saya telah membuat perintah string tunggal untuk melakukan semua ini, tetapi ada tangkapan. x11VNC tampaknya mogok dalam jumlah banyak. Seperti secara harfiah, saya mungkin menyelesaikan 10 menit pekerjaan sebelum sistem saya macet lagi dan saya harus me-restart x11vnc. Tapi ini bukan tentang pertanyaan ini.

Perintah yang saya gunakan adalah sebagai berikut:

ssh -L 5900:[REMOTE SYSTEM IP]:5900 user@FQDN.SERVER.NET 'ssh [REMOTE SYSTEM IP] 'pkill x11vnc; x11vnc --ncache 10''

Sekarang saya telah memasukkan perintah PKILL di sini sehingga akan menghapus instance x11vnc beku yang masih berjalan sehingga saya dapat membebaskan port 5900 (dan tidak memiliki proses zombie menembus sistem saya): Namun ini tidak berhasil. Tidak peduli apa yang saya lakukan, jika ini double hop, ini hanya mengembalikan x11vnc, perintah tidak ditemukan

CATATAN : Jika saya menghapus pkill, string perintah ini berfungsi dengan baik. Tapi aku harus membunuh zombie

Jika dari server namun saya mencoba menjalankan perintah:

ssh [REMOTE SYSTEM IP] 'pkill x11vnc; x11vnc --ncache 10' 

ini bekerja dengan baik! Adakah yang tahu mengapa ini tidak akan berfungsi ketika melakukan koneksi ssh "double hop"?

Jawaban:


1

Dari contoh Anda, sepertinya Anda mengumpulkan sekumpulan tanda kutip tunggal di dalam kumpulan tanda kutip tunggal lainnya. Anda perlu "melarikan diri" set kutipan dalam dan tanda koma seperti ini:

ssh -L 5900:[REMOTE SYSTEM IP]:5900 user@FQDN.SERVER.NET 'ssh [REMOTE SYSTEM IP] \'pkill x11vnc\; x11vnc --ncache 10\''

Atau, Anda dapat membuat file batch kecil pada sistem yang menjalankan x11vnc. Script melakukan kill lalu x11vnc untuk Anda, maka semua yang Anda lakukan adalah menjalankan script sebagai perintah terakhir Anda.


Kisah nyata, saya hanya berharap bahwa saya akan dapat menemukan cara untuk melakukannya. Itu hanya menghasilkan berbagai skrip kecil yang muncul di mana-mana. Saya kira saya bisa menulis ulang skrip eksekusi x11vnc menjadi sesuatu seperti x11vnc-single yang pertama kali melakukan pkill dari setiap instance yang berjalan. Either way, terima kasih atas bantuan Anda, dan wawasan.
dynamphorous

Saya memang mencoba melarikan diri dari kutipan dalam, tetapi menemukan itu hanya menendang kembali EOF yang tak terduga sambil mencari yang cocok '' '. Itu tidak terduga.
dynamphorous

Anda dapat mencoba menggunakan kutipan berbeda untuk dua perintah. Gunakan "" untuk yang luar, lalu "" untuk yang dalam. Anda mungkin perlu melarikan diri dari ";" antara pkill dan x11vnc.
dan_linder

Anda benar. Tetapi ada satu hal lagi, perlu menggunakan backtick (aksen kubur) daripada tanda kutip tunggal untuk tanda batin. Saya akan memposting sebagai jawaban ketika saya diizinkan juga (akan membawa saya 3 jam lagi karena reputasi saya) Terima kasih lagi
dynamphorous

0

Saya akhirnya bisa menyelesaikan masalah. Ternyata saya perlu menggunakan `bukan 'untuk batin' '. (backtick (aksen kubur) alih-alih kutipan tunggal)

Jadi perintah terakhir yang berfungsi adalah:

ssh -L 5900:[REMOTE SYSTEM IP]:5900 user@FQDN.SERVER.NET 'ssh [REMOTE SYSTEM IP \`pkill x11vnc\; x11vnc --ncache 10\`'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.