GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare un terminale basato sul Web utilizzando xterm.js per ssh in un sistema sulla rete locale

Dopo un po' di ricerca ecco il codice funzionante.

Librerie:

1) https://socket.io/

Questa libreria è utilizzata per trasmettere i pacchetti dal client al server.

2) https://github.com/staltz/xstream

Questa libreria è utilizzata per la visualizzazione del terminale.

3) https://github.com/mscdex/ssh2

Questa è la libreria principale utilizzata per stabilire una connessione con il tuo server remoto.

Passaggio 1:installa la libreria 3 nella cartella del progetto

Passaggio 2:inizia dal lato del nodo e crea un server.js file per socket aperto

Passo 3:Collega il socket del client al server del nodo (entrambi sono nella macchina locale)

La logica complicata è come usare socket e ssh2.

All'emissione del socket è necessario attivare un comando SSH utilizzando la libreria ssh2. Alla risposta della libreria ssh2 (dal server) è necessario trasmettere il pacchetto socket al client. Questo è tutto.

Fai clic qui per trovare un esempio.

Quell'esempio avrà questi file e cartelle:

Type    Name
------------
FILE    server.js
FILE    package.json
FOLDER  src
FOLDER  xtream

Per prima cosa devi configurare l'IP del tuo server, utente e password o file cert su server.js ed eseguire semplicemente node server.js .

PS:non dimenticare di eseguire npm install

Fammi sapere se hai domande!


Dopo alcune ricerche in seguito mi sono imbattuto in questo servizio:https://tmate.io/ che fa perfettamente il lavoro. Tuttavia, se hai bisogno di un terminale di tmate basato sul Web, devi utilizzare i loro server ssh come proxy inverso, cosa con cui idealmente non mi sentivo a mio agio. Tuttavia, forniscono tmate-server che può essere utilizzato per ospitare il proprio server proxy inverso ma manca di interfaccia utente web. Ma per creare un sistema in cui devi accedere a un client dietro NAT su ssh sul Web, di seguito sono riportati i passaggi.

  • Installa e configura tmate-server su una macchina cloud.
  • Installa tmate sul lato client e configura per la connessione a una macchina cloud.
  • Crea un'applicazione nodejs utilizzando xterm.js (facile grazie alla comunicazione basata su WebSocket) che si connette al tuo tmate-server e passa i comandi al rispettivo client. (Fai attenzione ai problemi di sicurezza dell'esposizione di questa applicazione, poiché passerai comandi Linux).
  • A seconda del tuo caso d'uso potresti aver bisogno di un piccolo wrapper attorno al client tmate sul lato client per avviarlo/arrestarlo automaticamente o tramite un'interfaccia utente/azione manuale.

Nota:ho scritto un piccolo wrapper anche sul lato client per avviare/arrestare e trasmettere le informazioni richieste a un server API (scritto in nodejs) che poi passa le informazioni a un'altra API che collega il browser alla rispettiva sessione client . Poiché avevamo scritto questa applicazione, includeva l'autenticazione e le restrizioni sui comandi di ciò che può essere eseguito sul terminale. Puoi personalizzarlo molto.


Linux
  1. SSHPass:come eseguire SSH in un server utilizzando uno script senza password (in modo non interattivo)

  2. Come reimpostare la password dell'amministratore di Plesk utilizzando SSH in Linux Server?

  3. Come ripristinare il database MySQL usando il comando in SSH?

  4. Come scaricare un file dal server usando SSH?

  5. Come consentire SSH nel terminale dopo essersi connessi al server VPN utilizzando i server NordVPN tramite OpenVPN?

Come creare un utente SFTP per una radice del documento del server Web

Come generare e utilizzare una chiave SSH utilizzando PuTTY

Come SSH nel tuo server Linux da Windows

Come creare un proxy HTTP utilizzando Squid su CentOS 8

Come configurare il server e il client VPN Linux utilizzando OpenVPN

Come creare una macchina virtuale remota utilizzando il driver SSH generico della macchina mobile