6Aug

Hoe op afstand bestanden te kopiëren via SSH zonder uw wachtwoord in te voeren

SSH is een redder in nood wanneer u een computer op afstand moet beheren, maar wist u dat u 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 u Windows gebruikt, kunt u Cygwin gebruiken om Linux-achtige functionaliteit te krijgen, en met een klein beetje bijstellen, zal SSH ook worden uitgevoerd.

Bestanden kopiëren via SSH

Beveiligde kopie is een erg 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 hoe het externe gedeelte moet worden geformatteerd. Wanneer u een extern bestand adresseert, moet u dit op de volgende manier doen:

user @ server: pad /to/-bestand

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 dit 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 u het tegenovergestelde moet doen? U kunt bestanden op dezelfde manier vanaf een externe server kopiëren.

Hier heb ik een bestand van de map "~ /Desktop/" op 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. ..

U kunt gewoon

scp -Pr. ..

doen 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 u weetwaar dingen neer te zetten.

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 je misschien niet altijd in de buurt bent om het wachtwoord in te voeren. En laten we eerlijk zijn, het is heel erg vervelend om je wachtwoord in te voeren op een externe computer waar je natuurlijk altijd toegang toe hebt.

Nou, we kunnen ons omzeilen met behulp van wachtwoorden door sleutelbestanden te gebruiken. We kunnen ervoor zorgen dat de computer twee belangrijke bestanden genereert - één publiek dat op de externe server hoort, en één privé die zich op uw computer bevindt 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 plaatst deze in:

~ /.ssh/

met de namen "id_rsa" voor uw persoonlijke sleutel, en "id_rsa.pub" vooruw openbare sleutel.

Nadat u de opdracht hebt ingevoerd, wordt u gevraagd waar u de sleutel wilt opslaan. U kunt op Enter drukken om de bovengenoemde standaardwaarden te gebruiken.

Vervolgens wordt u gevraagd om 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 om het bestand met de publieke sleutel naar uw externe computer te kopiëren. 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 redelijk veilig en gebruikt standaard een bit-length van 2048.

Het is in theorie eigenlijk 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 persoonlijke sleutelbestand en nodig, 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 je wordt ook niet voortdurend lastig gevallen voor wachtwoorden.

Kan ik het openbare / private sleutelpaar hergebruiken?

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 u kunt herstellen nadat uw e-mailwachtwoord is geweigerd)

U kunt het beste nieuwe sleutelparen maken voor elke computer en elk account dat u wilt linken. Op die manier, als een van uw persoonlijke sleutels op een of andere manier wordt betrapt, haalt u slechts één account op één externe computer binnen.

Het is ook heel 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 symlinks in uw ~ /.ssh/-directory te maken. Afhankelijk van wat ik aan het doen ben, gebruik ik deze superparanoïde superveilige methode om me gerust te stellen.

Hebt u SCP in scripts gebruikt? Gebruik je sleutelbestanden in plaats van wachtwoorden? Deel uw eigen expertise met andere lezers in de comments!