Vidarebefordran av SSH-agenten
SSH agent forwarding, eller vidarebefordran av SSH-agenten, innebär att man kan vidarebefordra SSH-agenten till ett fjärrsystem. På så sätt behöver man inte kopiera sin privata SSH-nyckel till fjärrsystemet, eller skapa flera nycklar för olika system. Men det finns risker med det.
Bild: Montage av bilder från OpenClipart-Vectors och Peggy och Marco Lachmann-Anke
Om man använder en SSH-agent på sin lokala dator för att hålla nyckeln upplåst för sin användare, går det att vidarebefordra den till ett fjärrsystem. Det är praktiskt om man exempelvis utvecklar kod på flera olika system och behöver pusha till GitHub eller Bitbucket. Detta tar bort behovet att ha flera nycklar på flera olika system.
Det enda som behövs för att aktivera vidarebefordran av agenten är flaggan
-A
när man ansluter till fjärrsystemet, samt att nyckeln finns i sin lokala
agent.
jake@red-dwarf$> eval $(ssh-agent)
Agent pid 62196
jake@red-dwarf$> ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/jake/.ssh/id_rsa:
Identity added: /home/jake/.ssh/id_rsa (jake@red-dwarf)
jake@red-dwarf$> ssh -A jake@192.168.0.43
jake@ubuntu$> git clone git@bitbucket.org:jackbenny/test-repo.git
Cloning into 'test-repo'...
Receiving objects: 100% (3/3), done.
Bakom kulisserna
Bakom kulisserna använder vidarebefordran en socket. Filen skapas
i /tmp
-katalogen, och en miljövariabel – SSH_AUTH_SOCK
– pekar på
den.
jake@ubuntu$> echo $SSH_AUTH_SOCK
/tmp/ssh-XXXXOmC7Wb/agent.181748
jake@ubuntu$> file /tmp/ssh-XXXXOmC7Wb/agent.181748
/tmp/ssh-XXXXOmC7Wb/agent.181748: socket
jake@ubuntu$> ss -x -e -a | grep agent.181748
u_str LISTEN 0 128 /tmp/ssh-XXXXOmC7Wb/agent.181748 467833 * 0 <-> ino:1059313 dev:0/64514 peers:
När du loggar ut eller avslutar den aktiva sessionen tas socket-filen bort från fjärrsystemet.
Problem med tmux
Ett problem med vidarebefordran av agenten är när man återupptar en
tmux
-session. När man återupptar en tmux
-session med tmux at
har
sessionen kvar den gamla socket-filen i miljövariabeln – från när tmux
först
startades. Detta är dock enkelt åtgärdat med ett enda kommando.
Kom ihåg att kommandot ska köras efter att du har återupptagit din session med
tmux at
:
jake@ubuntu$> eval $(tmux show-env -s | grep '^SSH_AUTH_SOCK')
Kommandot listar miljövariablerna från tmux
med show-env
, greppar efter
den rätta variabeln – SSH_AUTH_SOCK
– och exekverar sedan variabeln i skalet
med eval
, som då exporterar den. Detta uppdaterar variabeln med den rätta
socket-filen.
Säkerhetsrisker
Man bör vara försiktig med att vidarebefordra sin agent till okända system. En annan användare med root-rättigheter på fjärrsystemet kan använda din socket-fil i sitt egna skal. Då kan den användaren använda din identitet till att komma åt alla git-repon eller andra fjärrsystem dit din nyckel fungerar.
Här använder jag användaren Kalle från samma fjärrsystem som tidigare till att
använda användaren Jakes identitet. Kalle har sudo
-rättigheter på systemet.
kalle@ubuntu$> sudo -i
[sudo] password for kalle:
root@ubuntu#> export SSH_AUTH_SOCK=/tmp/ssh-XXXXOmC7Wb/agent.181748
root@ubuntu#> git clone git@bitbucket.org:jackbenny/test-repo.git
Cloning into 'test-repo'...
Receiving objects: 100% (3/3), done.
Det finns således både för- och nackdelar med vidarebefordran av SSH-agenten. Å andra sidan finns det även risker med att kopiera sin nyckel till fjärrsystemet, eller att skapa flera nycklar för olika system.
I jämförelse med att kopiera sin egna privata nyckel till mängder av fjärrsystem är ändå vidarebefordran av SSH-agenten relativt säker. Socket-filen raderas från systemet vid utloggning. En nyckel kommer å andra sidan alltid finnas kvar tills du raderar den. Man bör dock vara medveten om att det finns en risk att en root-användare använder socket-filen.
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
Var försiktig med att curl:a skript som root
Att installera program i Linux genom att omdirigera utdata från Curl till skalet är snabbt och smidigt. Men det är ack så farligt om du inte känner till programmet eller dess ursprung.
-
Jenkins som ett alternativ till Ansible Tower
Ansible Tower kommer med en stor prislapp, speciellt för ett mindre företag eller en privatperson. AWX å andra sidan är helt fritt, men kräver numera Kubernetes. För den som vill automatisera sina Ansible Playbooks går det dock bra att använda Jenkins som en ersättning för Tower och AWX.
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
-
Det nya Docker Compose
Sedan i mitten av förra året har det gamla Python-baserade
docker-compose
-kommandot sakta ersatts av det nyare Go-baseradedocker compose
. Det nya kommandot är ett plugin till Docker istället för ett fristående kommando som tidigare.
Senaste nyheterna och inläggen
-
Ny utgåva av Docker från grunden
Docker från grunden utkommit i en ny utgåva. Den största skillnaden är uppdateringen till Docker Compose version 2. Även andra mindre uppdateringar har gjorts för att hålla boken aktuell.
-
PGP-krypterat formulär
Jag blev inspirerad av Tutanotas Secure Connect – ett säkert webbformulär som skickar uppgifterna krypterat direkt till inkorgen. Skulle det inte gå att bygga något liknande med PGP? Det gick, och det var dessutom förvånansvärt enkelt då det redan finns ett GnuPG-bibliotek för PHP.
-
Var försiktig med att curl:a skript som root
Att installera program i Linux genom att omdirigera utdata från Curl till skalet är snabbt och smidigt. Men det är ack så farligt om du inte känner till programmet eller dess ursprung.
-
DOSBox för att programmera gamla personsökare
DOSBox kan användas till betydligt mer än bara gamla spel. Ett intressant användningsområde är att kunna använda gamla DOS-program för att programmera diverse enheter över serieporten. Oftast behövs inte ens en serieport, istället går det att använda en USB-serieportsadapter.
-
GDPR som ett stöd, inte ett hinder
Företag, föreningar och kommuner borde se GDPR som ett stöd och en vägledning, inte ett hinder. Trots det är det många som väntar ut Schrems II-domens efterspel för att inte behöva göra något. Andra försöker komma runt GDPR på olika sätt. Men man får glömma inte bort vem GDPR ska skydda – organisationens viktigaste tillgångar; kunderna, medlemmarna och invånarna.
Utvalda artiklar
-
Poliser satte dit oskyldig
Två poliser dömdes i juni till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och gripit en oskyldig man i hans bostad i Landskrona. Händelsen ägde rum en natt i mars förra året och spelades in av en övervakningskamera i mannens bostad.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
-
Stort deltagande på årets Gubbdata
I helgen var det Gubbdata i Lund – ett av Sveriges största demoparty. På plats fanns cirka ett hundra deltagare, alla med en passion för retrodatorer.
-
Kapad identitet
I mitten av september förra året blev Kristina utsatt för ett id-kapningsförsök. Någon hade ansökt om ett lån på 250 000 kr i hennes namn. Låneansökan gick ut till ett 20-tal banker.
-
Amiga-scenen lever än
I en villa mellan Ljungskile och Stenungsund den 27 november träffades de igen, ett gäng glada Amiga-entusiaster. Man träffas för att prata, titta på demos, spela och ha allmänt trevligt.
CyberInfo Sverige är ett IT- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.