GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo di Secure Shell (SSH) per l'accesso e Secure Copy (SCP) per il trasferimento dei dati su Linux

SSH sta per Secure Shell. È un protocollo di accesso remoto crittografato. Una volta impostato su ciascun nodo, può essere utilizzato per comunicare con vari altri nodi in quella rete.

I principali vantaggi di SSH sono:

  • SSH utilizza l'algoritmo di crittografia RSA per generare chiavi pubbliche e private, rendendo estremamente difficile l'intrusione.
  • Poiché SSH è un protocollo di accesso remoto, può essere configurato su un laptop. Ciò significa che puoi utilizzare il tuo laptop per connetterti in modalità wireless al cluster Raspberry Pi.
  • Poiché protocolli come SCP (Secure Copy) e SFTP (Secure File Transfer Protocol) vengono eseguiti su SSH, puoi utilizzarli per trasferire file e cartelle direttamente da un nodo all'altro.
  • SSH supporta l'accesso una tantum. Ciò significa che devi inserire le credenziali solo la prima volta che accedi. Dal secondo accesso in poi, non è necessario.

Iniziamo con la generazione di chiavi SSH. Affinché l'SSH possa essere utilizzato, le chiavi devono essere generate tra due o più nodi in modo che possa avvenire il trasferimento dei dati. Usiamo la RSA per la crittografia. Nota che su un nodo generiamo le chiavi e avrà le chiavi private o segrete. Lo stesso nodo genererà anche una chiave pubblica che verrà inviata ad altri nodi che desiderano inviare dati a questo nodo. Eseguire i seguenti comandi sul nodo da cui si desidera inviare i dati. Chiamo questo nodo il "nodo master" e gli altri nodi "nodi di lavoro".

cd ~
ssh-keygen --t rsa --C "[email protected]"

Questi due comandi impostano una posizione predefinita di /home/pi/_ssh/id_rsa per memorizzare la chiave.

Se viene richiesta una passphrase, lasciare vuota la passphrase. Fatto ciò, il passaggio successivo consiste nell'inviare le chiavi pubbliche al nodo di lavoro. Quindi assicurati di avere il nodo di lavoro connesso alla rete. Ora possiamo impostare le chiavi di crittografia sul nodo di lavoro, quindi l'indirizzo IP utilizzato è l'indirizzo IP del nodo di lavoro. Esegui il comando seguente sul nodo master.

cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir .ssh;cat >> .ssh/authorized_keys"

Una volta generate le chiavi SSH, possiamo accedere a qualsiasi altro nodo a cui sono state inviate le chiavi dal nodo master e per farlo utilizzare il comando:

ssh [email protected]

Nel comando precedente "pi" indica l'utente, per impostazione predefinita tutti i PI che utilizzano Raspbian avranno l'utente come "pi" e "192.168.3.216" è l'IP del mio client. dovrai cambiarlo per rappresentare l'indirizzo IP del PI del tuo cliente.

Questo richiederà una password. Una volta effettuato l'accesso, tutti i comandi digitati verranno eseguiti su quel nodo e non sul master, ma l'output verrà visualizzato sul master stesso. SSH può essere utilizzato anche per eseguire comandi direttamente sugli altri nodi. Ad esempio, per modificare il nome host di nodi diversi, utilizzare questi comandi in un formato come di seguito:

ssh [email protected] 'sudo echo "cilent001" | sudo nano /etc/hostname'
ssh [email protected] 'sudo echo "cilent002" | sudo nano /etc/hostname'
ssh [email protected] 'sudo echo "cilent003" | sudo nano /etc/hostname'

Come mostrato sopra, possiamo usare SSH per eseguire comandi in altri nodi/PI senza effettivamente accedervi. Di seguito è riportato un altro esempio per arrestare in sicurezza un nodo nella rete con indirizzo IP 192.168.3.216

ssh [email protected] 'sudo poweroff'

La figura seguente mostra come viene utilizzato SSH per accedere a un nodo di lavoro (192.168.3.216) e dal nodo di lavoro riportare il terminale di controllo al nodo principale.

Come si può vedere nella figura sopra, l'accesso a un nodo di lavoro avviene direttamente, cioè senza immissione di password tranne che per la prima volta. Ma ogni volta che il controllo del terminale ritorna al nodo master (192.168.3.215), è necessario inserire le credenziali di accesso. In questo modo il master è sempre protetto da minacce esterne.

Quindi, dopo aver inviato comandi tramite SSH ad altri nodi, potrebbero verificarsi situazioni in cui i dati devono essere inviati a più nodi. Se il numero di nodi è piccolo, possiamo accedere manualmente a ciascun nodo, collegarlo a un display e una tastiera e inviare file. Ma questo è un modo altamente inefficiente per farlo quando le dimensioni del cluster sono grandi. Un modo più semplice sarebbe usare SCP per inviare file. Installa SCP usando il comando:

sudo apt-get install scp

Si noti che alcuni sistemi operativi Linux potrebbero essere forniti con SCP preinstallato, ma il Raspbian che stavamo utilizzando non lo aveva. Il comando generale per inviare un singolo file è:

scp (percorso del file sul dispositivo locale) [email protected] (percorso della posizione remota)

Esempio:

scp /pi/example.c [email protected] /pi/project

Qui, il dispositivo remoto a cui inviare i dati viene riconosciuto dall'indirizzo IP. Molti file in una directory possono essere inviati utilizzando l'opzione ricorsiva (-R). Ad esempio:

scp -r /pi/project [email protected] /pi/project

Il comando precedente trasferisce ricorsivamente tutti i file nel /pi/project dall'host locale alla cartella ricorsiva nell'host remoto identificato dall'indirizzo IP.

L'immagine seguente mostra i vari comandi ssh e scp. Inizia elencando il contenuto della sua cartella corrente, quindi chiama "scp" in modo ricorsivo per trasferire tutti i file nella cartella corrente in una cartella in un altro nodo. Quindi accede all'altro nodo e mostra che scp ha trasferito correttamente i contenuti alla destinazione.

SCP può essere utilizzato con poche altre opzioni per rendere il trasferimento conforme ad alcune delle nostre condizioni. Ecco alcune opzioni:

    • Possiamo usare l'opzione "-p" per preservare i tempi di modifica, i tempi di accesso e le modalità dal file originale. Esempio:

      scp -p test.c [email protected]:~/

      Qui verranno conservati anche nel nodo di destinazione il tempo di accesso, le modalità di accesso e l'ora dell'ultima modifica del file "test.c".

    • SCP consente di comprimere i file prima che possano essere inviati attraverso la rete alla destinazione. Questo è molto utile quando i file sono molto grandi da trasferire e quindi la compressione aumenterà la velocità con cui verranno inviati. Per fare ciò utilizziamo l'opzione "-C". Esempio:

      scp -pC test.c [email protected]:~/

      Qui possiamo vedere che è possibile utilizzare più opzioni ed entrambe le loro funzionalità verranno applicate al comando.

    • La programmazione socket prevede l'invio e la ricezione di dati tramite porte e SCP può essere utilizzato per inviare dati tramite porte specifiche all'host remoto. Questo può essere fatto usando l'opzione "-P". Esempio:

      scp -P 21938 test.c [email protected]:~/

      Qui, la porta utilizzata per inviare i dati è 1938.

    • Potrebbero esserci casi in cui non vorresti conoscere lo stato del trasferimento di file, come nell'immagine sopra. Ha senso disattivare lo stato di trasferimento quando c'è una grande quantità di file. Possiamo farlo usando l'opzione "-q". Esempio:

scp -rq ~/files [email protected]:~/files

Qui, il contenuto della cartella denominata file viene trasferito nella cartella dei file su un altro nodo, ma la barra di stato e i messaggi di debug sono tutti disabilitati, che non vengono visualizzati.


Linux
  1. Utilizzo di ssh-keygen e condivisione per l'autenticazione basata su chiave in Linux

  2. Come convertire il file PPK in chiavi OpenSSH e accedere utilizzando SSH in Linux?

  3. Come trasferire file in Linux con SCP e Rsync

  4. Come configurare le chiavi SSH per l'accesso ssh "senza password" in Linux

  5. Utilizzo di rz e sz sotto la shell Linux

Linux chsh Command Tutorial per principianti (5 esempi)

Come eseguire il backup e il ripristino dei dati utilizzando Restic in Linux

Come disabilitare l'accesso SSH per l'utente root in Linux?

Come trasferire file in modo sicuro utilizzando il comando SCP in Linux

11 Utili comandi “ssh” e “scp” in Linux

Gli 8 migliori telefoni sicuri Linux per la privacy e la sicurezza