Hoe u op afstand bestanden kunt kopiëren via SSH zonder uw wachtwoord in te voeren
SSH is een redder in nood wanneer je een computer op afstand moet beheren, maar wist je dat je ook bestanden kunt uploaden en downloaden? Met behulp van SSH-sleutels kunt u overslaan met het invoeren van wachtwoorden en dit gebruiken voor scripts!
Dit proces werkt op Linux en Mac OS, op voorwaarde dat ze correct zijn geconfigureerd voor SSH-toegang. Als je Windows gebruikt, kun je Cygwin gebruiken om Linux-achtige functionaliteit te krijgen, en met een beetje tweaken, zal SSH ook draaien.
Bestanden kopiëren via SSH
Beveiligd kopiëren is echt een nuttige opdracht en het is echt gemakkelijk te gebruiken. Het basisformaat van de opdracht is als volgt:
scp [opties] original_file destination_file
De grootste kicker is het formatteren van het externe deel. Wanneer u een extern bestand adresseert, moet u dit op de volgende manier doen:
user @ server: path / to / file
De server kan een URL of een IP-adres zijn. Dit wordt gevolgd door een dubbele punt en vervolgens het pad naar het bestand of de map in kwestie. Laten we een voorbeeld bekijken.
scp -P 40050 Desktop / url.txt [email protected]: ~ / Desktop / url.txt
Deze opdracht bevat de vlag [-P] (merk op dat het een hoofdletter P is). Hierdoor kan ik een poortnummer opgeven in plaats van de standaard 22. Dit is voor mij nodig vanwege de manier waarop ik mijn systeem heb geconfigureerd.
Vervolgens is mijn oorspronkelijke bestand "url.txt" in een map met de naam "Desktop". Het doelbestand bevindt zich in "~ / Desktop / url.txt", hetzelfde als "/user/yatri/Desktop/url.txt". Dit commando wordt uitgevoerd door de gebruiker "yatri" op de externe computer "192.168.1.50".
Wat als je het tegenovergestelde moet doen? U kunt bestanden van een externe server op dezelfde manier kopiëren.
Hier heb ik een bestand van de map "~ / Desktop /" van de externe computer gekopieerd naar de map "Desktop" van mijn computer.
Om hele mappen te kopiëren, moet je de [-r] vlag gebruiken (merk op dat het om een kleine letter r gaat).
Je kunt ook vlaggen combineren. In plaats van
scp -P-r ...
Je kunt het gewoon doen
scp -Pr ...
Het moeilijkste onderdeel hier is dat het voltooien van tabbladen niet altijd werkt, dus het is handig om een andere terminal te hebben met een SSH-sessie, zodat je weet waar dingen moeten worden geplaatst.
SSH en SCP zonder wachtwoorden
Veilige kopie is geweldig. Je kunt het in scripts plaatsen en back-ups laten maken op externe computers. Het probleem is dat u niet altijd in de buurt bent om het wachtwoord in te voeren. En laten we eerlijk zijn, het is echt heel vervelend om je wachtwoord in te voeren op een externe computer waar je uiteraard altijd toegang toe hebt.
Wel, we kunnen ons omzeilen met behulp van wachtwoorden door sleutelbestanden te gebruiken. We kunnen de computer twee belangrijke bestanden laten genereren - één publiek dat op de externe server hoort, en één privé die op uw computer staat en beveiligd moet zijn - en deze zullen worden gebruikt in plaats van een wachtwoord. Best handig, toch??
Voer op uw computer de volgende opdracht in:
ssh-keygen -t rsa
Dit genereert de twee sleutels en zet ze in:
~ / .Ssh /
met de namen "id_rsa" voor uw privésleutel en "id_rsa.pub" voor uw openbare sleutel.
Nadat u de opdracht hebt ingevoerd, wordt u gevraagd waar u de sleutel wilt opslaan. Je kunt op Enter drukken om de bovengenoemde standaardwaarden te gebruiken.
Vervolgens wordt u gevraagd een wachtwoordzin in te voeren. Druk op Enter om dit veld leeg te laten en doe het opnieuw als het om bevestiging vraagt. De volgende stap is het kopiëren van het openbare sleutelbestand naar uw externe computer. U kunt scp gebruiken om dit te doen:
De bestemming voor uw openbare sleutel bevindt zich op de externe server, in het volgende bestand:
~ / .Ssh / authorized_keys2
Latere openbare sleutels kunnen aan dit bestand worden toegevoegd, net als het bestand ~ / .ssh / known_hosts. Dit betekent dat als u een andere openbare sleutel voor uw account op deze server wilde toevoegen, u de inhoud van het tweede id_rsa.pub-bestand naar een nieuwe regel in het bestaande authorized_keys2-bestand zou kopiëren.
Veiligheidsoverwegingen
Is dit niet minder veilig dan een wachtwoord?
In praktische zin, niet echt. De persoonlijke sleutel die wordt gegenereerd, wordt opgeslagen op de computer die u gebruikt en wordt nooit overgedragen, zelfs niet om te worden geverifieerd. Deze privésleutel komt ALLEEN overeen met die ene openbare sleutel en de verbinding moet worden gestart vanaf de computer met de persoonlijke sleutel. RSA is behoorlijk beveiligd en gebruikt standaard een lengte van 2048 bit.
Het is eigenlijk in theorie vergelijkbaar met het gebruik van je wachtwoord. Als iemand uw wachtwoord kent, gaat uw beveiliging uit het raam. Als iemand uw privésleutelbestand heeft, gaat de beveiliging verloren voor elke computer met de overeenkomende openbare sleutel, maar deze moet toegang hebben tot uw computer om deze te krijgen.
Kan dit veiliger zijn?
U kunt een wachtwoord combineren met sleutelbestanden. Volg de bovenstaande stappen, maar voer een sterke wachtwoordzin in. Wanneer u nu verbinding maakt via SSH of SCP gebruikt, hebt u het juiste privésleutelbestand nodig net zoals de juiste wachtwoordzin.
Nadat u eenmaal uw wachtwoordzin hebt ingevoerd, wordt u hier pas opnieuw om gevraagd als u uw sessie sluit. Dat betekent dat de eerste keer dat u SSH / SCP gebruikt, u uw wachtwoord moet invoeren, maar voor alle volgende acties is dit niet nodig. Nadat u zich hebt afgemeld bij uw computer (niet bij de externe) of uw terminalvenster hebt gesloten, moet u dit opnieuw invoeren. Op deze manier neem je niet echt de beveiliging op, maar word je ook niet voortdurend lastiggevallen met wachtwoorden.
Kan ik het openbare / privé-sleutelpaar opnieuw gebruiken??
Dit is een heel slecht idee. Als iemand je wachtwoord vindt en je gebruikt hetzelfde wachtwoord voor al je accounts, dan hebben ze nu toegang tot al die accounts. Evenzo is uw privésleutelbestand ook supergeheim en belangrijk. (Raadpleeg voor meer informatie Hoe repareren nadat uw e-mailwachtwoord is mislukt)
Het is het beste om nieuwe sleutelparen te maken voor elke computer en account die u wilt koppelen. Op die manier, als een van uw persoonlijke sleutels op de een of andere manier wordt betrapt, haalt u slechts één account op één externe computer binnen.
Het is ook erg belangrijk om op te merken dat al uw privésleutels op dezelfde plaats zijn opgeslagen: in ~ / .ssh / op uw computer kunt u TrueCrypt gebruiken om een veilige, gecodeerde container te maken en vervolgens symbolische koppelingen maken in uw ~ / .ssh / map. Afhankelijk van wat ik aan het doen ben, gebruik ik deze super-paranoïde superbeveiligde methode om me gerust te stellen.
Heb je SCP in scripts gebruikt? Gebruik je sleutelbestanden in plaats van wachtwoorden? Deel uw eigen expertise met andere lezers in de opmerkingen!