Setelah sedikit riset, inilah kode yang berfungsi.
Perpustakaan:
1) https://socket.io/
Pustaka ini digunakan untuk mengirimkan paket dari klien ke server.
2) https://github.com/staltz/xstream
Pustaka ini digunakan untuk tampilan terminal.
3) https://github.com/mscdex/ssh2
Ini adalah perpustakaan utama yang digunakan untuk membuat koneksi dengan server jarak jauh Anda.
Langkah 1:Instal Library 3 ke dalam folder proyek Anda
Langkah 2:Mulai dari sisi node buat sebuah server.js
file untuk soket terbuka
Langkah 3:Sambungkan soket klien ke server node (keduanya ada di mesin lokal)
Logika rumitnya adalah bagaimana menggunakan socket dan ssh2.
Saat mengeluarkan soket, Anda perlu memicu perintah SSH menggunakan pustaka ssh2. Sebagai tanggapan dari perpustakaan ssh2 (dari server), Anda perlu mengirimkan paket soket ke klien. Itu saja.
Klik di sini untuk menemukan contoh.
Contoh itu akan memiliki file &folder ini:
Type Name
------------
FILE server.js
FILE package.json
FOLDER src
FOLDER xtream
Pertama, Anda perlu mengonfigurasi IP server, pengguna dan kata sandi atau file sertifikat di server.js dan jalankan node server.js
.
P.S.:Jangan lupa untuk menjalankan npm install
Beri tahu saya jika Anda memiliki pertanyaan!
Setelah beberapa penelitian kemudian saya menemukan layanan ini:https://tmate.io/ yang berfungsi dengan baik. Meskipun jika Anda memerlukan terminal tmate berbasis web, Anda harus menggunakan server ssh mereka sebagai proxy terbalik yang idealnya tidak nyaman bagi saya. Namun, mereka menyediakan tmate-server yang dapat digunakan untuk menghosting server proxy balik Anda sendiri tetapi tidak memiliki UI web. Tetapi untuk membangun sistem di mana Anda harus mengakses klien di balik NAT melalui ssh di web, berikut adalah langkah-langkahnya.
- Instal dan konfigurasikan tmate-server di beberapa mesin cloud.
- Instal tmate di sisi klien dan konfigurasikan untuk terhubung ke mesin cloud.
- Buat aplikasi nodejs menggunakan xterm.js (mudah karena komunikasi berbasis WebSocket) yang terhubung ke server tmate Anda dan meneruskan perintah ke klien masing-masing. (Hati-hati terhadap masalah keamanan saat membuka aplikasi ini, karena Anda akan meneruskan perintah Linux ).
- Bergantung pada kasus penggunaan Anda, Anda mungkin memerlukan pembungkus kecil di sekitar klien tmate di sisi klien untuk memulai/menghentikannya secara otomatis atau melalui beberapa UI/tindakan manual.
Catatan:Saya juga menulis pembungkus kecil di sisi klien untuk memulai/menghentikan dan meneruskan informasi yang diperlukan ke server API (ditulis dalam nodejs) yang kemudian meneruskan informasi tersebut ke API lain yang menghubungkan browser ke sesi klien masing-masing . Karena kami telah menulis aplikasi ini, itu termasuk otentikasi serta pembatasan perintah dari apa yang dapat dijalankan di terminal. Anda dapat banyak menyesuaikannya.