GNU/Linux >> Linux Esercitazione >  >> Linux

Un piccolo file SSH copia la magia sulla riga di comando

Gli amministratori di sistema Linux utilizzano quotidianamente SSH per connettersi da un sistema all'altro. Il motivo è che è il protocollo de facto per la connessione sicura ai sistemi Linux. È sicuro perché tutto il traffico tra i sistemi è crittografato, incluso lo scambio di accesso iniziale. L'unica cosa che noi amministratori di sistema utilizziamo Telnet in questi giorni è testare una connessione remota a un server Web o a una porta remota. OK, lo ammetto, sono stato conosciuto per hackerare uno o due server di posta elettronica utilizzando Telnet, ma questa è una storia per un'altra volta. Io divago. Puoi anche utilizzare comandi relativi a SSH per trasferire file tra host utilizzando SFTP o SCP, da a un sistema remoto o da un sistema remoto. Ma sto per mostrarti un fantastico trucco di magia SSH che impressionerà i tuoi amici e forse confonderà Penn e Teller su come l'hai fatto.

Nota: Questa procedura prevede lo scambio di chiavi SSH tra host e il risultato è che non è più necessario emettere una password per effettuare la connessione.

Prerequisito:generazione della chiave SSH

Prima di poter eseguire questa meraviglia magica, devi preparare i tuoi sistemi a utilizzare le chiavi SSH tra di loro. In realtà, questo passaggio è facoltativo, ma per semplificarti la vita, ti consiglio di eseguirlo.

Per semplicità, in questo esempio, abbiamo tre sistemi:host1, host2 e host3 che utilizzano gli indirizzi IP 10.10.1.50, 10.10.1.60 e 10.10.1.70, rispettivamente. La tabella seguente potrebbe essere un modo più chiaro per presentare questo scenario.

host1 host2 host3
10.10.1.50 10.10.1.60 10.10.1.70

Accedi a host1 ed esegui il comando seguente per generare la chiave SSH.

[host1] $ ssh-keygenGenerazione coppia di chiavi rsa pubbliche/private.Inserire il file in cui salvare la chiave (/root/.ssh/id_rsa):Directory creata '/root/.ssh' .Inserisci passphrase (vuoto per nessuna passphrase):Inserisci di nuovo la stessa passphrase:La tua identificazione è stata salvata in /root/.ssh/id_rsa.La tua chiave pubblica è stata salvata in /root/.ssh/id_rsa. pub.L'impronta digitale della chiave è:SHA256:XWk+zJ5Kphe/sT78yg1jLdQCybN4dE2o52eOihEuwPo root@rhel8L'immagine randomart della chiave è:+---[RSA 2048]----+| .. || . ..+ || *.=. || . +.@.. || oS +oB . || . . . o.o.=o || . . oo+O=. || . . *.+=B. || E o.oo*=o |+----[SHA256]-----+ 

Accettare le impostazioni predefinite premendo il tasto INVIO tre volte per continuare come mostrato sopra. Ho inserito il testo nello screenshot. Non vedrai quelle voci nella finestra del tuo terminale. Hai generato la chiave SSH per questo host. Ripeti questo processo su host2 e host3.

Copia chiavi

Questo passaggio deve essere eseguito su tutti gli host in entrambe le direzioni in modo che i trasferimenti di file e altre connessioni di tipo SSH possano procedere senza ostacoli alla richiesta di password. Questo è il metodo più semplice per lo scambio di chiavi tra host.

Emetti i seguenti comandi da host1 a host2 (10.10.1.60)

[host1] $ ssh-copy-id khess@host2/usr/bin/ssh-copy-id:INFO:Fonte delle chiavi da installare:"/home/khess/.ssh/ id_rsa.pub"Impossibile stabilire l'autenticità dell'host 'host2 (10.10.1.60)'.L'impronta digitale della chiave ECDSA è SHA256:fM/5eaHGa37W+0xq4QZfL+Y6NobRbCVH1G4uhQLAwMw.Sei sicuro di voler continuare a connetterti (sì/no)? yes/usr/bin/ssh-copy-id:INFO:tentativo di accesso con le nuove chiavi, per filtrare quelle già installate/usr/bin/ssh-copy-id:INFO:1 key( s) rimangono da installare -- se viene richiesto ora è di installare la nuova password keyskhess@host2:Numero di chiavi aggiunte:1 Ora prova ad accedere alla macchina, con:"ssh 'khess@host2'" e controlla che siano state aggiunte solo le chiavi che volevi. 

E ora impartisci lo stesso comando da host1 a host3 (10.10.1.70)

[host1] $ ssh-copy-id khess@host3/usr/bin/ssh-copy-id:INFO:Fonte delle chiavi da installare:"/home/khess/.ssh/ id_rsa.pub"Impossibile stabilire l'autenticità dell'host 'host3 (10.10.1.70)'.L'impronta digitale della chiave RSA è SHA256:Y0X9C7rVNiRgM4yuBH8DUOUed5d/N57VYO+aoRmXmP4.Sei sicuro di voler continuare a connetterti (sì/no)? yes/usr/bin/ssh-copy-id:INFO:tentativo di accesso con le nuove chiavi, per filtrare quelle già installate/usr/bin/ssh-copy-id:INFO:1 key( s) rimangono da installare -- se viene richiesto ora è di installare la nuova password keyskhess@host3:Numero di chiavi aggiunte:1 Ora prova ad accedere alla macchina, con:"ssh 'khess@host3'" e controlla che siano state aggiunte solo le chiavi che volevi. 

Ora, qualsiasi transazione di tipo SSH sarà senza password da host1 a host2 e da host1 a host3.

Ripetere questa procedura per gli host 2 e 3.

[host2] $ ssh-copy-id khess@host1

[host2] $ ssh-copy-id khess@host3

[host3] $ ssh-copy-id khess@host1

[host3] $ ssh-copy-id khess@host2

Questo copia le chiavi tra tutti gli host in modo che ora qualsiasi transazione di tipo SSH da o verso qualsiasi host sarà senza password. Metti alla prova il tuo per dimostrarlo a te stesso.

Fai accadere la normalità

A scopo di test, crea un nuovo file su ogni sistema nella tua home directory come , in modo che su host1 hai host1.txt, su host2 hai host2.txt e su host3 hai host3.txt.

Come esercizio preliminare, non magico, accedi a host1 e copia il file host1.txt su host2 e host3. Devi specificare il percorso completo del file di destinazione.

; /home/khess/host1.txthost1.txt                                                                        100%   0   0.0KB/s   00:00

I file sono vuoti e quindi vedi che la dimensione è 0 e la velocità di trasferimento è 0,0 KB/s. Questi numeri sarebbero diversi se il file avesse una dimensione qualsiasi. Questo esercizio ha lo stesso aspetto se accedi a host2 o host3 e copi i file locali sugli altri sistemi remoti. Questo non è particolarmente interessante o magico.

Magia:la copia

Quindi, per il mio trucco finale per la copia di file, la vera magia di copiare un file da un host a un altro host senza accedere a nessuno dei due da un terzo host. Si presenta così:

Avvia una sessione SCP da host1 che copia il file host2.txt da host2 a host3. Vediamo come appare dalla riga di comando. È necessario specificare il percorso esatto sia nel sistema di origine che in quello di destinazione.

;>

Il file host2.txt copia da host2 a host3 senza un login. Magia.

In generale, questo comando è simile a:

[hostX] $ scp utente@host_origine:/percorso/del/file utente@host_destinazione:/percorso/del/file

È possibile rinominare il file di destinazione durante la copia. Vedi qualche possibilità di scripting automatizzato usando questo trucco magico?

Ed è qui che esclami:"Wow, è magia!"

Conclusione

SSH, come puoi vedere, non è solo una cosa. È un protocollo sicuro utilizzato per interagire con un computer, copiare file e proteggere altri tipi di comunicazioni, come in "Servizio X su SSH". Questo articolo ha mostrato come configurare le chiavi SSH in modo da non dover digitare una password per accedere a un sistema remoto, copiare file su un sistema remoto o copiare file tra due sistemi remoti. L'impostazione di chiavi SSH tra i sistemi significa che puoi automatizzare facilmente attività come la manipolazione di file senza memorizzare una password in un file. E usare SSH/SCP in questo modo non è davvero magico, ma probabilmente lo sapevi già.


Linux
  1. Manipolare il tasto X e il puntatore sulla riga di comando?

  2. Crea file utilizzando la riga di comando in Linux

  3. 4 strumenti per scaricare qualsiasi file utilizzando la riga di comando in Linux

  4. Come utilizzare il comando ssh-keygen per configurare ssh senza password

  5. Un piccolo trucco:seleziona un file casuale o una riga nel file con shuf

Copia e incolla nella riga di comando di Linux con xclip

Come estrarre il file tar.gz in Linux utilizzando la riga di comando

Copia un file in più directory dalla riga di comando su Linux

Visualizza il contenuto di un file nella riga di comando di Linux

Utilizzo di Google Drive dalla riga di comando di Linux

5 comandi per visualizzare il contenuto di un file nella riga di comando di Linux