Kör automatiserade skript över SSH
Vi har visat dig hur du använder SSH för att överföra filer säkert. Men det är ett stort problem med SSHs standardbeteende. Du är endast ansluten till fjärrmaskinen efter att du manuellt har angett lösenordet som reglerar det för alla uppgifter som du vill köra utan uppsyn. Eller gör det?
Här är en snabb nedgång på hur OpenSSH CLI-verktygen (scp och sftp) fungerar så att du bättre kan uppskatta problemet. När du vill kopiera över filer till eller från fjärrvärden kan du använda scp som automatiskt initierar en SSH-anslutning till fjärrvärden. Varje gång du kör ett SCP-kommando etableras en ny anslutning till fjärrkontrollen. Så om du har flera SCP-kommandon skulle du ange samma lösenord flera gånger.
Det är därför du inte vill använda scp i några skript som du vill köra utan uppsyn. Det finns också det faktum att om du har flera konton på flera maskiner i nätverket, skulle du ha problem med att memorera unika, starka lösenord för varje.
För att lösa detta problem måste du byta OpenSSHs standardautentiseringsmekanism till ett nyckelbaserat system.
Nyckel till framgång
Som standard använder OpenSSH bara nycklar för att verifiera en serverns identitet första gången en klient möter en ny fjärrmaskin:
$ ssh [email protected] Autenticiteten hos värd "atlantis.remote.com (atlantis.remote.com)" kan inte upprättas. ECDSA-nyckelfingeravtrycket är da: e8: a2: 77: f4: e5: 10: 56: 6d: d4: d2: dc: 15: 8e: 91: 22. Är du säker på att du vill fortsätta att ansluta (ja / nej)?
När du svarar genom att skriva "ja" läggs fjärrvärden till listan med kända värdar. Så förutom att servern autentiserar klienten genom att fråga om ett lösenord, autentiserar klienten även servern med en nyckel.
På samma sätt kan du också få dig en uppsättning nycklar för att bevisa din identitet. OpenSSH använder ett par nycklar för att bevisa din identitet och skapa en säker anslutning till en fjärrserver. Den privata nyckeln är bara för ögonen och används av din OpenSSH-klient för att bevisa din identitet till servrar. Då finns det den offentliga nyckeln som du ska hålla under alla dina konton på alla fjärrmaskiner du vill sätta in i.
För att skapa en nyckel anger du på din klient:
$ ssh-keygen Generera public / private rsa nyckelpar. Ange fil där du ska spara nyckeln (/home/bodhi/.ssh/id_rsa): Ange lösenordsfras (tom utan lösenordsfras): Ange samma lösenordsfras igen: Din identifiering har sparats i /home/bodhi/.ssh/id_rsa. Din offentliga nyckel har sparats i /home/bodhi/.ssh/id_rsa.pub.
Kom ihåg att inte lämna lösenfrasen tom och notera platsen där nycklarna är lagrade. Filen "id_rsa" kan endast läsas av ditt konto, och dess innehåll krypteras med lösenfrasen som du levererade under generationen.
Nästa steg är att kopiera den offentliga nyckeln till fjärrservern. Förutsatt att du vill logga in på användaren "admin" på fjärrmaskinen som heter "atlantis.remote.com", kan du flytta nycklarna med ett enda kommando:
$ ssh-copy-id -i ~ / .ssh / id_rsa.pub [email protected] [email protected]'s lösenord:
När du har angett lösenordsfrasen för din privata nyckel kommer den offentliga nyckeln automatiskt att placeras i rätt plats på fjärrservern, som som standard är filen "~ / .ssh / authorized_keys".
När du nu ssh till fjärrmaskinen blir du uppmanad till ditt lösenordsfras. Den enda fördelen med att använda nycklar är att istället för att autentisera dig med ett lösenord som överförs okrypterat, bestämmer fjärrservern och din klient din identitet utifrån tangenterna.
Du kan också nu ssh till flera fjärrlådor med samma lösenfras, så länge som dessa fjärrmaskiner har din allmänna nyckel. Så du behöver inte komma ihåg flera lösenord.
Men du kan fortfarande inte köra skript utan att bli avbruten för lösenordsfraser.
Relaterat : Så här aktiverar du tvåfaktorautentisering för SSH-anslutning
SSH-agent till undsättning
OpenSSH buntar ett verktyg som heter ssh-agent, som håller dina privata nycklar i minnet. När en agent körs, istället för att fråga dig om lösenordsfras, kommer SSH-klienterna att interagera med agenten.
Du kan starta agenten med " ssh-agent /bin/bash
", förutsatt att du använder bash-skalet.
Alla kommandon som kräver åtkomst till dina OpenSSH privata nycklar kommer att avlyssas och besvaras av agenten.
När agenten kör, måste du utrusta den med dina nycklar. Detta görs genom att aktivera programmet "ssh-add" som vanligtvis laddar tangenterna från standardidentitetsfilen (~ / .ssh / id_rsa).
$ ssh-add Ange lösenordsfras för /home/bodhi/.ssh/id_rsa: Identitet läggas till: /home/bodhi/.ssh/id_rsa (/home/bodhi/.ssh/id_rsa)
Nu när du loggar in på fjärrdatorn med " ssh [email protected]
" får du tillåtas utan att skriva in lösenordsfrasen!
På samma sätt kan scp och sftp också ansluta till fjärrvärdarna utan att någonsin be dig om ett lösenordsfras. Så du kan nu schemalägga och köra skript som automatiskt hanterar filer på en fjärrmaskin.
Också nu när du använder nycklar är det en bra idé att inaktivera autentisering via lösenord. För att göra detta, redigera fjärrserverens konfigurationsfil (/etc/ssh/.sshd_config) och ändra parametern " PasswordAuthentication
" från "ja" till "nej". Från och med nu, om någon försöker ansluta till din SSH-tjänst som inte har en offentlig nyckel på servern, kommer de att nekas åtkomst utan att ens se inloggningsprompten.
Bildkredit: Karunakar Rayker