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 [options] 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:
user@server:path/to/file
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 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 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".
For å kopiere hele kataloger må du bruke flagget [-r] (merk at det er en liten bokstav).
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 den i skript og få den 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 som 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, ikke sant?
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.
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 den offentlige nøkkelfilen til den eksterne datamaskinen. Du kan bruke scp for å gjøre dette:
~/.ssh/authorized_keys2
Senere offentlige nøkler kan legges til denne filen, mye som ~ /.ssh / known_hosts-filen. Dette betyr at hvis du vil legge til en annen offentlig nøkkel for kontoen din på denne serveren, kopierer du innholdet til den andre id_rsa.pub-filen til en ny linje i den eksisterende authorized_keys2-filen.
Sikkerhetshensyn
Er det 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 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 over SSH eller bruker SCP, trenger du den riktige private nøkkelfilen i tillegg til riktig passord.
Når du har skrevet inn passordet ditt en gang, blir du ikke bedt om det igjen før du lukker økten. Det betyr at første gang du SSH / SCP, må du skrive inn passordet ditt, men alle påfølgende handlinger krever ikke 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 oppnår 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.Tilsvarende 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 private nøkler lagres 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 supersikker 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!