6Aug
SSH är en livräddare när du behöver fjärrstyra en dator, men visste du att du också kan ladda upp och ladda ner filer också?Med SSH-nycklar kan du hoppa över att behöva ange lösenord och använda det här för skript!
Denna process fungerar på Linux och Mac OS, förutsatt att de är korrekt konfigurerade för SSH-åtkomst. Om du använder Windows kan du använda Cygwin för att få Linux-liknande funktionalitet, och med en liten tweaking, kommer SSH också att köras.
Kopiera filer över SSH
Säker kopia är ett riktigt användbart kommando, och det är väldigt enkelt att använda. Basformatet för kommandot är som följer:
scp [alternativ] original_file destination_file
Den största kickern är hur man formaterar fjärrdelen. När du adresserar en fjärrfil måste du göra det på följande sätt:
användare @ server: sökväg /to/-fil
Servern kan vara en URL eller en IP-adress. Detta följs av ett kolon, sedan sökvägen till den aktuella filen eller mappen. Låt oss titta på ett exempel.
scp -P 40050 Skrivbord / url.txt [email protected]: ~ /Desktop/ url.txt
Detta kommando innehåller flaggan [-P]( observera att det är en huvudstad P).Detta tillåter mig att ange ett portnummer istället för standard 22. Detta är nödvändigt för mig på grund av hur jag har konfigurerat mitt system.
Därefter är min ursprungliga fil "url.txt" som ligger inuti en katalog som heter "Desktop".Destinationsfilen är i "~ /Desktop/ url.txt" som är densamma som "/user/yatri/Desktop/ url.txt".Detta kommando drivs av användaren "yatri" på fjärrdatorn "192.168.1.50".
Vad om du behöver göra motsatsen? Du kan också kopiera filer från en fjärrserver på samma sätt.
Här har jag kopierat en fil från fjärrdatorns "~ /Desktop/" -mapp till min dators "Desktop" -mapp.
För att kopiera hela kataloger måste du använda flaggan [-r]( observera att det är en liten bokstav r).
Du kan också kombinera flaggor. Istället för
scp -P -r. ..
Du kan bara göra
scp-Pr. ..
Den svåraste delen här är att flikavslutningen inte alltid fungerar, så det är bra att ha en annan terminal med en SSH-session som kör så att du vetvar att lägga saker
SSH och SCP utan lösenord
Säker kopia är bra. Du kan lägga det i skript och få det att göra säkerhetskopior till fjärrdatorer. Problemet är att du inte alltid kan vara runt för att ange lösenordet. Och, låt oss vara ärliga, det är en verklig stor smärta att sätta in ditt lösenord till en fjärrdator som du självklart har tillgång till hela tiden.
Tja, vi kan komma runt med lösenord genom att använda nyckelfiler. Vi kan få datorn att generera två nyckelfiler - en allmänhet som hör till fjärrservern och en privat som finns på datorn och måste vara säker - och de kommer att användas istället för ett lösenord. Ganska bekvämt, eller hur?
På din dator, skriv följande kommando:
ssh-keygen -t rsa
Det här genererar de två nycklarna och lägger dem in:
~ /.ssh/
med namnen "id_rsa" för din privata nyckel och "id_rsa.pub" fördin offentliga nyckel.
Efter att ha kommit in i kommandot blir du ombedd var du ska spara nyckeln. Du kan trycka på Enter för att använda ovanstående standardinställningar.
Därefter kommer du att bli ombedd att ange ett lösenordsfras. Tryck på Enter för att lämna detta tomma, gör sedan det igen när det ber om bekräftelse. Nästa steg är att kopiera den offentliga nyckelfilen till din fjärrdator. Du kan använda scp för att göra det här:
Destinationen för din offentliga nyckel är på fjärrservern i följande fil:
~ /.ssh/ authorized_keys2
Senare offentliga nycklar kan läggas till den här filen, ungefär som ~ /.ssh/ known_hosts-filen. Det innebär att om du vill lägga till en annan offentlig nyckel för ditt konto på den här servern, kopierar du innehållet i den andra id_rsa.pub-filen till en ny rad i den befintliga authorized_keys2-filen.
Säkerhetshänsyn
Är det inte mindre säkert än ett lösenord?
I praktisk mening, inte riktigt. Den privata nyckeln som genereras lagras på datorn du använder, och den överförs aldrig, inte ens för att verifieras. Den här privata nyckeln matchar ENDAST med den ena offentliga nyckeln, och anslutningen måste startas från den dator som har den privata nyckeln. RSA är ganska säker och använder som standard en 2048 bitlängd.
Det är faktiskt ganska likt i teorin att använda ditt lösenord. Om någon har känt ditt lösenord går din säkerhet ut ur fönstret. Om någon har din privata nyckelfil, går säkerheten bort på vilken dator som helst som har den matchande publiceringsnyckeln, men de behöver tillgång till din dator för att få den.
Kan detta vara säkrare?
Du kan kombinera ett lösenord med nyckelfiler. Följ stegen ovan, men ange ett starkt lösenordsfras. Nu, när du ansluter över SSH eller använder SCP, behöver du rätt privat nyckelfil samt rätt lösenord.
När du har skrivit in ditt lösenfras en gång kommer du inte att bli ombedd till den tills du stänger din session. Det betyder att första gången du SSH / SCP måste du ange ditt lösenord, men alla efterföljande åtgärder kräver inte det. När du loggar ut från din dator( inte fjärrkontrollen) eller stänger ditt terminalfönster, måste du ange det igen. På det här sättet förorsakar du inte verkligen säkerhet, men du är inte trakasserad för lösenord hela tiden.
Kan jag återanvända det offentliga / privata nyckelparet?
Detta är en riktigt dålig idé.Om någon hittar ditt lösenord, och du använder samma lösenord för alla dina konton, har de nu tillgång till alla dessa konton. På samma sätt är din privata nyckelfil också superhemlig och viktig.(För mer information, ta en titt på hur du återställer efter att ditt lösenord är kompromissat)
Det är bäst att skapa nya nyckelpar för varje dator och konto du vill länka. På det sättet, om en av dina privata nycklar fångas på något sätt, kommer du bara att kompromissa ett konto på en fjärrdator.
Det är också väldigt viktigt att notera att alla dina privata nycklar lagras på samma plats: i ~ /.ssh/ på din dator kan du använda TrueCrypt för att skapa en säker krypterad behållare och sedan skapa symlink i din /.ssh/-katalog. Beroende på vad jag gör använder jag denna superparanoida supersäkra metod för att ställa mig i sinnet.
Har du använt SCP i några skript? Användar du nyckelfiler i stället för lösenord? Dela din egen expertis med andra läsare i kommentarerna!