SSH er en livredder når du trenger å administrere en datamaskin eksternt, men visste du at du også kan laste opp og laste ned filer også? Ved å bruke SSH-nøkler kan du hoppe over å måtte skrive inn passord og bruke dette til skript!
Denne prosessen fungerer på Linux og Mac OS, forutsatt at de er riktig konfigurert for SSH-tilgang. Hvis du bruker Windows, kan du bruk Cygwin for å få Linux-lignende funksjonalitet , og med litt finjustering, SSH vil også kjøre .
Kopiere filer over SSH
Sikker kopi er en veldig nyttig kommando, og den er veldig enkel å bruke. Det grunnleggende formatet for kommandoen er som følger:
scp [options] original_fil destinasjonsfil
Den største kickeren er hvordan du formaterer den eksterne delen. Når du adresserer en ekstern fil, må du gjøre det på følgende måte:
bruker @ server: sti / til / fil
Serveren kan være en URL eller en IP-adresse. Dette følges av et kolon, deretter stien til den aktuelle filen eller mappen. La oss se på et eksempel.
scp –P 40050 Desktop / url.txt [email protected]: ~ / Desktop / url.txt
Denne kommandoen har [-P]-flagget (merk at det er hovedstad P). Dette lar meg spesifisere et portnummer i stedet for standard 22. Dette er nødvendig for meg på grunn av måten jeg har konfigurert systemet på.
Deretter er originalfilen min "url.txt" som er inne i en katalog som heter "Desktop". Destinasjonsfilen er i “~ / Desktop / url.txt” som er det samme som “/user/yatri/Desktop/url.txt”. Denne kommandoen kjøres av brukeren "yatri" på den eksterne datamaskinen "192.168.1.50".
Hva hvis du trenger å gjøre det motsatte? Du kan kopiere filer fra en ekstern server på samme måte.
Her har jeg kopiert en fil fra den eksterne datamaskinens "~ / Desktop /" -mappe til datamaskinens "Desktop" -mappe.
For å kopiere hele kataloger, må du bruke [-r]-flagget (merk at det er små bokstaver r).
Du kan også kombinere flagg. I stedet for
scp –P –r…
Du kan bare gjøre
SCP - Men ...
Den tøffeste delen her er at fullføring av faner ikke alltid fungerer, så det er nyttig å ha en annen terminal med en SSH-økt som kjører, slik at du vet hvor du skal plassere ting.
SSH og SCP uten passord
Sikker kopi er flott. Du kan sette den i skript og få den til å ta sikkerhetskopier til eksterne datamaskiner. Problemet er at du kanskje ikke alltid er i nærheten for å skrive inn passordet. Og, la oss være ærlige, det er veldig vondt å legge inn passordet ditt til en ekstern datamaskin du åpenbart har tilgang til hele tiden.
Vel, vi kan komme oss rundt ved hjelp av passord ved å bruke nøkkelfiler. Vi kan få datamaskinen til å generere to nøkkelfiler - en offentlig som hører hjemme på den eksterne serveren, og en privat som er på datamaskinen din og må være sikker - og disse vil bli brukt i stedet for et passord. Ganske praktisk, ikke sant?
Skriv inn følgende kommando på datamaskinen:
ssh-keygen –t rsa
Dette vil generere de to nøklene og sette dem i:
~ / .ssh /
med navnene “id_rsa” for din private nøkkel, og “id_rsa.pub” for din offentlige nøkkel.
Etter at du har skrevet inn kommandoen, blir du spurt om hvor du skal lagre nøkkelen. Du kan trykke Enter for å bruke de ovennevnte standardene.
Deretter blir du bedt om å oppgi en passordfrase. Trykk Enter for å la dette være tomt, og gjør det igjen når det ber om bekreftelse. Det neste trinnet er å kopiere filen med den offentlige nøkkelen til den eksterne datamaskinen. Du kan bruke scp til å gjøre dette:
Målet for den offentlige nøkkelen er på den eksterne serveren, i følgende fil:
~ / .ssh / autoriserte_taster2
Påfølgende offentlige nøkler kan legges til denne filen, omtrent som ~ / .ssh / known_hosts-filen. Dette betyr at hvis du vil legge til en annen offentlig nøkkel for kontoen din på denne serveren, vil du kopiere innholdet i den andre id_rsa.pub-filen til en ny linje på den eksisterende autoriserte_keys2-filen.
Sikkerhetshensyn
Er dette ikke mindre sikkert enn et passord?
I praktisk forstand, egentlig ikke. Den private nøkkelen som genereres, lagres på datamaskinen du bruker, og den overføres aldri, ikke engang å bli bekreftet. Denne private nøkkelen samsvarer KUN med den ene offentlige nøkkelen, og tilkoblingen må startes fra datamaskinen som har den private nøkkelen. RSA er ganske sikker og bruker en 2048 bitlengde som standard.
Det er faktisk ganske likt i teorien å bruke passordet ditt. Hvis noen har kjent passordet ditt, går sikkerheten din ut av vinduet. Hvis noen har din private nøkkelfil, mister sikkerheten for enhver datamaskin som har den samme kjønnsnøkkelen, men de trenger tilgang til datamaskinen din for å få den.
Kan dette være sikrere?
Du kan kombinere et passord med nøkkelfiler. Følg trinnene ovenfor, men skriv inn en sterk passordfrase. Nå, når du kobler til via SSH eller bruker SCP, trenger du den riktige private nøkkelfilen i tillegg til riktig passordfrase.
Når du har angitt passordfrasen en gang, blir du ikke bedt om det før du lukker økten. Det betyr at første gang du SSH / SCP, må du oppgi passordet ditt, men alle påfølgende handlinger krever ikke det. Når du har logget av datamaskinen (ikke den eksterne) eller lukket terminalvinduet, må du angi det igjen. På denne måten ofrer du ikke sikkerheten, men du blir heller ikke trakassert for passord hele tiden.
Kan jeg bruke det offentlige / private nøkkelparet på nytt?
Dette er en veldig dårlig idé. Hvis noen finner passordet ditt, og du bruker det samme passordet for alle kontoene dine, har de nå tilgang til alle disse kontoene. På samme måte er den private nøkkelfilen din også superhemmelig og viktig. (For mer informasjon, ta en titt på Slik gjenoppretter du når e-postpassordet ditt er kompromittert )
Det er best å lage nye nøkkelpar for hver datamaskin og konto du vil koble til. På den måten, hvis en av dine private nøkler blir fanget på en eller annen måte, vil du bare kompromittere en konto på en ekstern datamaskin.
Det er også veldig viktig å merke seg at alle dine private nøkler er lagret på samme sted: i ~ / .ssh / på datamaskinen din, kan du bruk TrueCrypt for å opprette en sikker, kryptert container, deretter lag symlinks i ~ / .ssh / katalogen. Avhengig av hva jeg gjør, bruker jeg dette super-paranoid super-sikker metode for å sette meg i ro.
Har du brukt SCP i noen skript? Bruker du nøkkelfiler i stedet for passord? Del din egen kompetanse med andre lesere i kommentarene!