Slik fjerner du eksternt filer over SSH uten å skrive inn passordet ditt
SSH er en livredder når du trenger fjernstyring av en datamaskin, men visste du at du også kan laste opp og laste ned filer også? Ved hjelp av 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 bruke Cygwin til å få Linux-lignende funksjonalitet, og med litt justering vil SSH også kjøre.
Kopiere filer over SSH
Sikker kopi er en veldig nyttig kommando, og det er veldig enkelt å bruke. Hovedformatet for kommandoen er som følger:
scp [alternativer] original_file destination_file
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: / til / fil
Serveren kan være en URL eller en IP-adresse. Dette følges av et kolon, deretter banen 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 inneholder [-P] -flagget (merk at det er en hovedstad P). Dette tillater 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 min opprinnelige fil "url.txt" som er inne i en katalog som heter "Desktop". Destinasjonsfilen er i "~ / Desktop / url.txt" som er den samme som "/user/yatri/Desktop/url.txt". Denne kommandoen blir drevet av brukeren "yatri" på den eksterne datamaskinen "192.168.1.50".
Hva Hvis du trenger å gjøre det motsatte? Du kan også 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 flagget [-r] (merk at det er en liten bokstav).
Du kan også kombinere flagg. I stedet for
scp -P-r ...
Du kan bare gjøre det
scp-Pr ...
Den tøffeste delen her er at fanefølge ikke alltid fungerer, så det er nyttig å ha en annen terminal med en SSH-sesjon som kjører slik at du vet hvor du skal sette ting.
SSH og SCP Uten passord
Sikker kopi er flott. Du kan sette det i skript og få det til å gjøre sikkerhetskopier til eksterne datamaskiner. Problemet er at du kanskje ikke alltid er rundt for å skrive inn passordet. Og la oss være ærlige, det er en virkelig stor smerte å sette inn passordet ditt til en ekstern datamaskin du åpenbart har tilgang til hele tiden.
Vel, vi kan komme seg rundt ved hjelp av passord ved å bruke nøkkelfiler. Vi kan få datamaskinen til å generere to nøkkelfiler - ett publikum som tilhører den eksterne serveren, og en privat som er på datamaskinen og må være sikker - og disse vil bli brukt i stedet for et passord. Ganske praktisk, rett?
Skriv inn følgende kommando på datamaskinen:
ssh-keygen -t rsa
Dette vil generere de to nøklene og sette dem inn:
~ / .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 hvor du skal lagre nøkkelen. Du kan trykke Enter for å bruke de ovennevnte standardene.
Deretter blir du bedt om å skrive inn 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 public key-filen til den eksterne datamaskinen. Du kan bruke SCP til å gjøre dette:
Destinasjonen for din offentlige nøkkel er på den eksterne serveren, i følgende fil:
~ / .Ssh / authorized_keys2
Senere offentlige nøkler kan legges til denne filen, mye som ~ / .ssh / known_hosts-filen. Dette betyr at hvis du ønsket å legge til en annen offentlig nøkkel for kontoen din på denne serveren, ville du kopiere innholdet til den andre id_rsa.pub-filen til en ny linje på den eksisterende authorized_keys2-filen.
Sikkerhetshensyn
Er dette ikke mindre sikkert enn et passord?
I en praktisk forstand, egentlig ikke. Den private nøkkelen som genereres, lagres på datamaskinen du bruker, og den overføres aldri, ikke engang for å bli verifisert. Denne private nøkkelen KUN samsvarer med den ene offentlige nøkkelen, og forbindelsen må startes fra datamaskinen som har den private nøkkelen. RSA er ganske sikker og bruker som standard en 2048 bitlengde.
Det er faktisk ganske likt i teorien til å bruke passordet ditt. Hvis noen har kjennskap til passordet ditt, går sikkerheten ut av vinduet. Hvis noen har din private nøkkelfil, går sikkerheten tapt på hvilken som helst datamaskin som har den tilhørende pubic-nøkkelen, men de trenger tilgang til datamaskinen for å få det.
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 over SSH eller bruker SCP, trenger du den riktige private nøkkelfilen i tillegg til riktig passord.
Når du har skrevet inn passordet en gang, blir du ikke bedt om det igjen før du lukker økten. Det betyr at den første gangen du SSH / SCP, må du skrive inn passordet ditt, men alle påfølgende handlinger vil ikke kreve det. Når du logger deg ut av datamaskinen din (ikke fjernkontrollen) eller lukker terminalvinduet, må du skrive det inn igjen. På denne måten forkaster du ikke virkelig sikkerhet, men du er heller ikke trakassert for passord hele tiden.
Kan jeg gjenbruke det offentlige / private nøkkelparet?
Dette er en veldig dårlig ide. 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 din private nøkkelfil også superhemmelig og viktig. (For mer informasjon, ta en titt på hvordan du gjenoppretter etter at passordet ditt er kompromittert)
Det er best å lage nye nøkkelpar for hver datamaskin og konto du vil koble sammen. På den måten, hvis en av dine private nøkler blir tatt på en eller annen måte, så 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 bruke TrueCrypt til å lage en sikker, kryptert container og deretter lage symlinks i ~ / .ssh / katalog. Avhengig av hva jeg gjør, bruker jeg denne superparanoide super-sikre metoden for å gjøre tankene mine trygge.
Har du brukt SCP i noen skript? Bruker du nøkkelfiler i stedet for passord? Del din egen ekspertise med andre lesere i kommentarene!