Vad är SSH-Agent Vidarebefordran och Hur Använder Man Det?

0
232
Funtap / Shutterstock

SSH-agent vidarebefordran gör att du kan använda din egen, lokal SSH-nyckel på distans utan att oroa dig för att lämna sekretessbelagda uppgifter om den server som du arbetar med. Det är byggt i ssh, och är lätt att ställa in och använda.

Vad Är en SSH-Agent?

Din publika SSH-nyckel är som ditt användarnamn eller din identitet, och du kan dela den med alla. Din privata SSH-nyckel är som ett lösenord, och sparas lokalt på din dator. Men, det är som att lagra dina lösenord på en klisterlapp—vem som helst kan se dem om de har tillgång till den. Så, för säkerhet, SSH kommer att be dig att ange en lösenfras när du skapar dina nycklar (förhoppningsvis du inte hoppa över detta steg) och det kommer att använda som lösenord för att kryptera och dekryptera din privata nyckel.

Men, detta betyder att du måste ange din lösenordsfras varje gång du behöver för att använda din privata nyckel, som kommer att få irriterande. För att hantera detta, de flesta SSH-varianter kommer att använda en agent, som håller dina krypterade nyckeln i minnet. Det betyder att du bara behöver för att låsa upp det en gång, och det kommer att fortsätta tills du startar om så att du kan logga in på dina servrar säkert utan att en lösenfras snabbt.

Vad är SSH-Agent-Vidarebefordran?

SSH-agent vidarebefordran är som att gå ytterligare ett lager djupare. Till exempel, tänk dig att du kan ansluta till en server och du vill git pull del kod som du lagra på Github. Du vill använda SSH-autentisering för Github, men du inte vill att dina privata nycklar på att servern, endast på din maskin.

För att lösa detta problem, kan du öppna din lokala SSH-agent till fjärr-server, som gör det möjligt att agera som dig medan du är ansluten. Detta betyder inte att skicka ditt privata nycklar över internet, inte ens när de är krypterad, det låter bara en avlägsen server för åtkomst till ditt lokala SSH-agent och bekräfta din identitet.

Det fungerar så här: du be din remote server för att dra några koden från Github, och Github säger “vem är du?” till servern. Vanligtvis den server skulle höra sin egen id_rsa filer att svara på, men istället kommer det att översända frågan till din lokala dator. Din lokala maskinen svarar på frågan och skickar ett svar (som inte omfattar din privata nyckel) till servern, som vidarebefordrar det tillbaka till Github. Github inte bryr sig om att din lokala dator besvarade frågan, det bara ser att det är besvarats, och låter dig ansluta.

Hur kan man Aktivera SSH-Agent Vidarebefordran

På Mac och Linux SSH-agent vidarebefordran är inbyggd i ssh, och ssh-agent-processen startar automatiskt. Allt du behöver göra är att se till att dina nycklar läggs till ssh-agent och konfigurera ssh för att använda vidarebefordran.

Lägg till Nycklar för att ssh-agent

Du kan använda verktyget för ssh-add för att lägga till nycklar till din lokala agent. Förutsatt att din privata nyckeln lagras i id_rsa, kan du köra:

ssh-add ~/.ssh/id_rsa

Du kan också manuellt klistra in nyckeln i stället för att använda id_rsa. Kontrollera att nyckeln ligger tillagd på rätt sätt med:

ssh-add -L

Om det är, det ska spotta ut din nyckel.

Att lägga Nycklar på macOS

På macOS, du kommer istället att behöva köra:

ssh-add -K ~/.ssh/id_rsa

-K-flaggan kommer att förvara nyckeln i macOS Nyckelring, vilket är nödvändigt för att komma ihåg dina nycklar genom omstarter.

Tillåter Vidarebefordran i Din kunds Config

Öppna upp din ~/.ssh/config filen på din lokala dator, eller göra en ny om den är tom. Vi kommer att skapa en ny regel för att se till agent vidarebefordran är aktiverad för denna server domän:

Värd exempel
ForwardAgent ja

Du bör ersätta exempel med din servrar domännamn eller IP-adress. Du kan använda jokertecknet * för värden, men då kommer du att vara vidarebefordran tillgång till dina privata nycklar till varje server som du ansluter till, vilket förmodligen inte är vad du vill.

Beroende på operativsystem kan du också ha config filer i /etc/ssh/ssh_config för macOS eller /etc/ssh_config för Ubuntu. Dessa filer kan åsidosätta user config-fil i ~/.ssh/config, så se till att ingenting är i konflikt med varandra. Rader som börjar med # är kommentarer, och har ingen effekt.

Du kan också manuellt aktivera agent vidarebefordran för varje domän med hjälp av ssh -En användare@värd, som kommer förbi alla config-filer. Om du vill ha en enkel metod för vidarebefordran utan att röra config, kan du lägga till alias ssh=”ssh -A till dina bash inställningar, men detta är samma som att använda ett jokertecken värd, så vi rekommenderar det inte för någonting säkerhet i fokus.

Testa SSH Vidarebefordran

Om du inte har två servrar på sidan, det enklaste sättet att testa om SSH-vidarebefordran är att arbeta är att lägga till din offentliga nyckel från din lokala dator till ditt Github-profil och försök till SSH för från en fjärransluten server:

ssh git@github.com

Om det fungerade, bör du se ditt användarnamn, och du bör kunna för att driva och dra kod från repor utan att någonsin sätta privata nycklar på servern.

Setup SSH Vidarebefordran för Windows-Klienter

Eftersom Windows inte är ett Unix-operativsystem, installation kommer att variera beroende på hur exakt du kör ssh i första hand.

Om du använder Linux Delsystem för Windows som låter dig köra bash på Windows-installationen kommer att vara samma som på Linux eller macOS, eftersom det är fullt virtualisera en Linux-distro att köra kommandoraden.

Om du använder Git Bash, inställningen är samma som på Linux, men måste du manuellt starta ssh-agent när du startar skal, som du kan göra med ett startskript i .bashrc.

Om du använder Spackel, installationen är ganska enkel. Från konfigurationen, går du till Anslutningen > SSH – > Auth och aktivera “Tillåt agent vidarebefordran.”

Du kan också lägga till din privata nyckel-fil från samma ruta. Kitt kommer att hantera SSH-agent för dig, så att du inte behöver röra runt med någon config-filer.

Vad Gör du om SSH Forwarding Fungerar inte

Se till att du faktiskt har SSH-nycklar i första hand, om du inte, du kan köra ssh-keygen, som kommer att placera din privata nyckel i ~/.ssh/id_rsa och din offentliga nyckel i ~/.ssh/id_rsa.puben.

Kontrollera att din SSH-nycklar fungerar med vanliga auth, och lägga till dem till ssh-agent. Du kan lägga till knappar med ssh-add.

Ssh-agent process behöver vara igång. På macOS och Linux, den bör starta automatiskt, men du kan kontrollera att det är att köra med:

echo “$SSH_AUTH_SOCK”

Om det är korrekt, bör du se en Lyssnare uttag som returneras.

Se till att din config-filer är korrekt inställt för att inkludera ForwardAgent ja, och se till att inga andra inställningsfiler är att skriva över detta beteende. För att kontrollera vilka konfigurationsfiler SSH använder, du kan köra ssh i utförligt läge:

ssh -v git@github.com

Som ska visas som config filer används. Filer som visas senare i denna lista har företräde framför tidigare filerna.

Och naturligtvis, command line options åsidosätta config-filer. Om agent forwarding fungerar inte med ssh -En, och dina nycklar är korrekt konfigurerade i ditt ombud, så något annat är fel, och du behöver för att kontrollera din anslutning till servrar i kedjan.