Node.js: creare una connessione SSH

Node.js: creare una connessione SSH

La connessione SSH (Secure Shell) è uno strumento essenziale per la gestione sicura di server remoti. In questo articolo, esploreremo come creare una connessione SSH utilizzando Node.js, un ambiente di runtime JavaScript ampiamente utilizzato per lo sviluppo di applicazioni server-side. Seguiremo una serie di passaggi per generare una coppia di chiavi SSH, connetterci a un server remoto e automatizzare il processo utilizzando Node.js.

Il primo passo è generare una coppia di chiavi SSH. Le chiavi SSH sono costituite da una chiave pubblica e una chiave privata. La chiave pubblica può essere condivisa con il server remoto, mentre la chiave privata deve rimanere segreta sul tuo computer.

Per generare una coppia di chiavi SSH, apri il terminale e esegui il seguente comando:


ssh-keygen -t rsa -b 4096 -C "tua_email@example.com"

Questo comando utilizzerà l'algoritmo RSA con una lunghezza di 4096 bit e associerà un commento (solitamente l'indirizzo email) alla chiave.

Una volta generata la coppia di chiavi, dovrai copiare la chiave pubblica sul server remoto. Puoi farlo con il seguente comando:


ssh-copy-id user@hostname

Assicurati di sostituire "user" con il tuo nome utente e "hostname" con l'indirizzo IP o il nome di dominio del tuo server.

Per connetterti al server remoto utilizzando Node.js, hai bisogno del modulo SSH2. Installalo utilizzando il seguente comando npm:


npm install ssh2

Ora puoi creare uno script Node.js per gestire la connessione SSH. Ecco un esempio di script di base:


const fs = require('fs');
const path = require('path');
const { Client } = require('ssh2');

const privateKeyPath = path.join(process.env.HOME, '.ssh', 'id_rsa');

const config = {
  host: 'hostname',
  port: 22,
  username: 'user',
  privateKey: fs.readFileSync(privateKeyPath),
};

const conn = new Client();

conn.on('ready', () => {
  console.log('Connesso con successo al server');
  
  // Puoi eseguire comandi o svolgere altre attività qui
  
  conn.end();
});

conn.connect(config);

Ricorda di sostituire "hostname" con l'indirizzo IP o il nome di dominio del tuo server e "user" con il tuo nome utente.

Esegui lo script Node.js utilizzando il seguente comando:


node nome_del_tuo_script.js

Se tutto è configurato correttamente, dovresti vedere un messaggio che conferma la connessione riuscita al server remoto.

Conclusione

Hai ora creato con successo una connessione SSH utilizzando Node.js. Puoi estendere questo script per eseguire comandi remoti, trasferire file o automatizzare altre attività di amministrazione del server.

Torna su