Come copiare i file da remoto su SSH senza inserire la password
SSH è un vero toccasana quando devi gestire da remoto un computer, ma lo sapevi che puoi anche caricare e scaricare file? Usando le chiavi SSH, puoi saltare di dover inserire le password e usarle per gli script!
Questo processo funziona su Linux e Mac OS, a condizione che siano configurati correttamente per l'accesso SSH. Se stai usando Windows, puoi usare Cygwin per ottenere funzionalità simili a Linux, e con un piccolo ritocco, anche SSH funzionerà.
Copia di file su SSH
La copia protetta è un comando davvero utile ed è davvero facile da usare. Il formato di base del comando è il seguente:
scp [opzioni] file_destinazione file_di_produzione
Il più grande kicker è come formattare la parte remota. Quando si indirizza un file remoto, è necessario farlo nel modo seguente:
utente @ server: path / to / file di
Il server può essere un URL o un indirizzo IP. Questo è seguito da due punti, quindi il percorso del file o della cartella in questione. Diamo un'occhiata a un esempio.
scp -P 40050 Desktop / url.txt [email protected]: ~ / Desktop / url.txt
Questo comando presenta il flag [-P] (si noti che è una P maiuscola). Questo mi consente di specificare un numero di porta invece del valore predefinito 22. Ciò è necessario per me a causa del modo in cui ho configurato il mio sistema.
Successivamente, il mio file originale è "url.txt" che si trova all'interno di una directory chiamata "Desktop". Il file di destinazione è in "~ / Desktop / url.txt", che è lo stesso di "/user/yatri/Desktop/url.txt". Questo comando viene eseguito dall'utente "yatri" sul computer remoto "192.168.1.50".
Cosa succede se hai bisogno di fare il contrario? È possibile copiare i file da un server remoto in modo simile.
Qui, ho copiato un file dalla cartella "~ / Desktop /" del computer remoto alla cartella "Desktop" del mio computer.
Per copiare intere directory, devi usare il flag [-r] (nota che è una r minuscola).
Puoi anche combinare le bandiere. Invece di
scp -P -r ...
Puoi solo farlo
scp -Pr ...
La parte più difficile qui è che il completamento delle schede non sempre funziona, quindi è utile avere un altro terminale con una sessione SSH in esecuzione in modo da sapere dove mettere le cose.
SSH e SCP senza password
La copia sicura è grande. Puoi metterlo negli script e farlo fare backup su computer remoti. Il problema è che potresti non essere sempre in giro per inserire la password. E, siamo onesti, è davvero una grande pena inserire la tua password su un computer remoto che ovviamente hai accesso a tutto il tempo.
Bene, possiamo aggirare usando le password usando i file chiave. Possiamo fare in modo che il computer generi due file chiave: un pubblico che appartiene al server remoto e uno privato che è sul tuo computer e deve essere protetto, e questi saranno usati al posto di una password. Piuttosto conveniente, giusto?
Sul tuo computer, inserisci il seguente comando:
ssh-keygen -t rsa
Questo genererà le due chiavi e le inserirà:
~ / .Ssh /
con i nomi "id_rsa" per la tua chiave privata e "id_rsa.pub" per la tua chiave pubblica.
Dopo aver inserito il comando, ti verrà chiesto dove salvare la chiave. Puoi premere Invio per usare i valori predefiniti sopra menzionati.
Successivamente, ti verrà chiesto di inserire una passphrase. Premi Invio per lasciare questo spazio vuoto, quindi fallo di nuovo quando chiede conferma. Il prossimo passo è copiare il file della chiave pubblica sul tuo computer remoto. Puoi usare scp per fare questo:
La destinazione della tua chiave pubblica è sul server remoto, nel seguente file:
~ / .Ssh / authorized_keys2
Le chiavi pubbliche successive possono essere aggiunte a questo file, proprio come il file ~ / .ssh / known_hosts. Ciò significa che se si desidera aggiungere un'altra chiave pubblica per il proprio account su questo server, si copierà il contenuto del secondo file id_rsa.pub in una nuova riga sul file authorized_keys2 esistente.
Considerazioni sulla sicurezza
Non è meno sicuro di una password?
In senso pratico, non proprio. La chiave privata che viene generata viene archiviata sul computer che stai utilizzando e non viene mai trasferita, nemmeno da verificare. Questa chiave privata si adatta SOLO con quella chiave pubblica ONE e la connessione deve essere avviata dal computer che ha la chiave privata. RSA è abbastanza sicuro e utilizza una lunghezza di 2048 bit per impostazione predefinita.
In teoria è praticamente simile all'utilizzo della tua password. Se qualcuno conosce la tua password, la tua sicurezza va fuori dalla finestra. Se qualcuno ha il tuo file di chiave privata, allora la sicurezza viene persa su qualsiasi computer che abbia la chiave pubblica corrispondente, ma hanno bisogno di accedere al tuo computer per ottenerlo.
Può essere più sicuro??
È possibile combinare una password con i file chiave. Segui i passaggi precedenti, ma inserisci una passphrase forte. Ora, quando ti connetti su SSH o usi SCP, avrai bisogno del file della chiave privata appropriato così come la passphrase corretta.
Dopo aver inserito la passphrase una volta, non ti verrà chiesto di nuovo fino alla chiusura della sessione. Ciò significa che la prima volta che si esegue SSH / SCP, sarà necessario inserire la password, ma tutte le azioni successive non lo richiederanno. Una volta usciti dal computer (non da quello remoto) o chiuso la finestra del terminale, sarà necessario inserirla di nuovo. In questo modo, non stai davvero sacrificando la sicurezza, ma non sei nemmeno molestato per le password in ogni momento.
Posso riutilizzare la coppia di chiavi pubblica / privata?
Questa è una pessima idea. Se qualcuno trova la tua password e usi la stessa password per tutti i tuoi account, ora hanno accesso a tutti questi account. Allo stesso modo, il tuo file di chiavi private è anche super-segreto e importante. (Per ulteriori informazioni, dare un'occhiata a Come recuperare dopo che la tua password di posta elettronica è compromessa)
È meglio creare nuove coppie di chiavi per ogni computer e account che desideri collegare. In questo modo, se una delle tue chiavi private viene catturata in qualche modo, comprometterebbe un solo account su un solo computer remoto.
È anche molto importante notare che tutte le tue chiavi private sono memorizzate nello stesso posto: in ~ / .ssh / sul tuo computer, puoi usare TrueCrypt per creare un contenitore sicuro e crittografato, quindi creare collegamenti simbolici nel tuo ~ / .ssh / directory. A seconda di quello che sto facendo, uso questo metodo super-paranoico super-sicuro per mettere a mio agio la mente.
Hai usato SCP in qualche script? Usi i file chiave invece delle password? Condividi la tua esperienza con altri lettori nei commenti!