Wat is SSH-Agent Forwarding en Hoe Gebruik Je Het?

0
277
Funtap / Shutterstock

SSH-agent forwarding kunt u gebruik maken van uw eigen, lokale SSH-sleutel op afstand, zonder zorgen te maken over het verlaten van vertrouwelijke gegevens op de server waarmee u werkt. Het is gebouwd in ssh, en is eenvoudig te installeren en te gebruiken.

Wat Is een SSH-Agent?

Uw publieke SSH sleutel is, zoals uw gebruikersnaam of identiteit, en je kunt delen met iedereen. Uw eigen SSH-sleutel werkt als een wachtwoord in, en wordt lokaal opgeslagen op uw computer. Maar, dit is zoals het opslaan van je wachtwoorden op een post-it note—iedereen ze kan zien als ze toegang tot hebben. Dus, voor de veiligheid, SSH zal je vragen om een wachtzin wanneer u het genereren van de sleutels van uw (hopelijk u niet overslaan die stap) en het gebruik dat van de wachtzin voor het coderen en decoderen met uw persoonlijke sleutel.

Echter, dit betekent dat je zult moeten voer uw wachtwoord elke keer dat u nodig hebt om het gebruik van uw persoonlijke sleutel, die zal wel wat vervelend. Om dit te beheren, de meeste SSH-implementaties gebruik van een middel, dat houdt je gedecodeerde sleutel in het geheugen. Dit betekent dat je alleen nodig hebt om te ontgrendelen het eens, en het zal blijven bestaan totdat u opnieuw opstart, zodat u zich aanmeldt bij uw servers veilig zonder een wachtzin prompt.

Wat is SSH-Agent Forwarding?

SSH-agent forwarding is alsof je nog een laag dieper. Bijvoorbeeld, stel je voor dat je aansluiten op een externe server, en u wilt git pull code die je opslaat op Github. U wilt gebruik maken van SSH authenticatie voor Github, maar u niet wilt dat uw persoonlijke sleutels op de externe server, alleen op uw machine.

Om dit op te lossen, kunt u het openen van uw lokale SSH agent naar de externe server, zodat het kan fungeren als u terwijl u verbonden bent. Dit niet stuur uw privé sleutels via het internet, zelfs niet terwijl ze versleuteld; het laat een externe server toegang tot uw lokale SSH agent en verifiëren van uw identiteit.

Het werkt als volgt: u vraagt uw server op afstand te trekken wat code van Github, en Github zegt: “wie bent u?” naar de server. Meestal op de server zou raadplegen zijn eigen id_rsa bestanden te beantwoorden, maar in plaats daarvan zal het doorsturen van de vraag naar uw lokale machine. Uw lokale machine antwoord op de vraag en stuurt de reactie (die niet onder uw eigen sleutel) op de server, en stuurt het terug naar Github. Github is niet de zorg die uw lokale machine beantwoord de vraag, hij ziet dat het zijn beantwoord, en kun je verbinding maken.

Hoe de SSH-Agent Forwarding

Op Mac en Linux, SSH-agent forwarding is gebouwd in ssh, en de ssh-agent proces wordt automatisch gestart. Alles wat je hoeft te doen is ervoor zorgen dat jouw sleutels worden toegevoegd aan de ssh-agent en configureren van ssh te gebruiken doorsturen.

Sleutels toevoegen ssh-agent

U kunt gebruik maken van het hulpprogramma ssh-add sleutels toevoegt aan uw lokale agent. Uitgaande van de private sleutel staat opgeslagen in id_rsa, u kunt uitvoeren:

ssh-add ~/.ssh/id_rsa

U kunt ook handmatig plakken in de sleutel in plaats van het gebruik van id_rsa. Controleer of de sleutel is toegevoegd correct met:

ssh-add -L

Als dat zo is, moet spugen uw sleutel.

Toevoegen Toetsen op macOS

Op macOS, je zult in plaats daarvan moet uitvoeren:

ssh-add -K ~/.ssh/id_rsa

De vlag-K bewaar de sleutel in het mac os-Sleutelhanger, die nodig is voor het onthouden van uw sleutels opnieuw opstarten.

Laat Doorsturen in Je Client Config

Open uw ~/.ssh/config bestand op uw lokale computer, of maak een nieuwe als deze leeg is. We zetten een nieuwe regel om ervoor te zorgen agent forwarding is ingeschakeld voor deze server-domein:

Host voorbeeld
ForwardAgent ja

Vervangt u bijvoorbeeld met uw servers, domein naam of IP adres in. U kunt het jokerteken * gebruiken voor het hosten, maar dan zult u het doorsturen van toegang tot uw privé sleutels voor elke server waarmee u verbinding mee te maken, dat is waarschijnlijk niet wat u wilt.

Afhankelijk van uw besturingssysteem, moet u mogelijk ook de instellingenbestanden in /etc/ssh/ssh_config voor macOS of /etc/ssh_config voor Ubuntu. Deze bestanden kunnen voorrang hebben op de user config bestand ~/.ssh/config, dus zorg ervoor dat er niets in strijd is. Regels die beginnen met # worden toegelicht, en hebben geen effect.

U kunt ook handmatig inschakelen agent forwarding voor een domein met behulp van ssh user@host, die zal bypass alle configuratie bestanden. Wilt u een eenvoudige methode voor het doorsturen zonder het aanraken van de configuratie kunt u toevoegen alias ssh=”ssh -A” om uw bash instellingen, maar dit is hetzelfde als met een wildcard host, dus we raden het niet aan om voor alles gericht zijn op beveiliging.

Test SSH Forwarding

Als u niet twee servers op de hand, de makkelijkste manier om te testen of SSH forwarding werkt het toevoegen van uw openbare sleutel van uw lokale computer naar uw Github profiel en proberen om SSH uit een externe server:

ssh git@github.com

Als het werkte, dient u uw gebruikersnaam, en je moet in staat zijn om push-en pull-code van een repo, zonder ooit het zetten van private sleutels op de server.

Setup SSH Forwarding voor Windows-Clients

Sinds Windows is geen Unix-besturingssysteem, de setup zal variëren afhankelijk van hoe je precies ssh in de eerste plaats.

Als je met behulp van de Linux-Subsysteem voor Windows, waarmee u bash op Windows, de opzet zal hetzelfde zijn als op Linux of macOS, omdat het volledig met het virtualiseren van een Linux-distro voor het uitvoeren van de commando-regel.

Als je Git Bash, de setup is hetzelfde als op Linux, maar moet u het handmatig starten van de ssh-agent wanneer u start de shell, die je kunt doen met een opstartscript in .bashrc.

Als je met behulp van PuTTY, de installatie is vrij eenvoudig. Van de configuratie, ga naar Verbinding > SSH > Auth en Toestaan inschakelen agent forwarding.”

U kunt ook uw eigen sleutel bestand van hetzelfde paneel. PuTTY zal omgaan met de SSH-agent voor u, dus u hoeft niet te knoeien met alle configuratie bestanden.

Wat te Doen als SSH Forwarding Werkt niet

Zorg ervoor dat je eigenlijk SSH sleutels in de eerste plaats; als je het niet hebt, kunt u uitvoeren ssh-keygen, die zal uw persoonlijke sleutel in ~/.ssh/id_rsa en de publieke sleutel in ~/.ssh/id_rsa.pub.

Controleer of uw SSH-sleutels goed werken met reguliere auth, en voeg ze toe aan de ssh-agent. U kunt toevoegen toetsen met ssh-add.

De ssh-agent proces moet ook worden uitgevoerd. Op macOS en Linux, het moet automatisch opstarten, maar u kunt controleren of uitgevoerd met:

echo “$SSH_AUTH_SOCK”

Als het correct is ingesteld, ziet u een Luisteraars socket geretourneerd.

Zorg ervoor dat uw configuratie bestanden correct zijn ingesteld om ForwardAgent ja, en zorg dat er geen andere configuratie bestanden worden overschreven dit gedrag. Om te controleren welke config bestanden SSH wordt gebruikt, kunnen uitvoeren van ssh in de uitgebreide modus:

ssh -v git@github.com

Die moet worden weergegeven die config bestanden worden gebruikt. Bestanden weergegeven later in deze lijst hebben voorrang op eerdere bestanden.

En natuurlijk, een command line opties overschrijven config bestanden. Als agent forwarding werkt niet met ssh -A is en de sleutels worden geconfigureerd in uw agent, dan is er iets anders mis is, en je moet om te controleren of uw verbinding met de servers in de keten.