Als je een SSH-sleutel gebruikt die beveiligd is met een wachtwoordzin, ben je waarschijnlijk bekend met het probleem: het is weliswaar veilig, maar het wordt al snel vervelend als je de wachtwoordzin elke keer opnieuw moet invoeren wanneer je verbinding maakt of wanneer je… git trekkenHet is een fout antwoord om de wachtzin uit de sleutel te verwijderen. Het beste antwoord is in veel gevallen: ssh-agent.
ssh-agent Het bewaart de ontgrendelde sleutel in het geheugen gedurende uw sessie. U typt de wachtzin één keer in, waarna de agent reageert op SSH-verzoeken. Het is handig, maar vereist twee voorzorgsmaatregelen: controleer welke agent wordt gebruikt en beperk de duur wanneer u werkt op een gedeelde machine of een beheerserver.

Controleer of ssh-agent al actief is.
Op veel Linux-distributies met een grafische interface draait al een SSH-agent. Bij pure SSH, op een server of in een minimale sessie is dit niet altijd het geval. Begin met het controleren van de omgevingsvariabele die door de SSH-tools wordt gebruikt:
echo "$SSH_AUTH_SOCK"
Als de uitvoer leeg is, weet je shell niet met welke agent hij moet communiceren. Je kunt ook controleren welke sleutels al geladen zijn:
ssh-add -l
Als je een bericht krijgt zoals dit De agent heeft geen identiteit.De agent reageert correct, maar er wordt geen sleutel geladen. Als de opdracht aangeeft dat er geen verbinding met de agent kan worden gemaakt, moet u er een starten.
Start ssh-agent in je sessie.
Om een agent in de huidige shell te starten, gebruikt u:
eval "$(ssh-agent -s)"
Het commando definieert de benodigde variabelen, waaronder SSH_AUTH_SOCK En SSH_AGENT_PID. Zonder de evalueerDe agent kan wel starten, maar je shell haalt de omgevingsvariabelen niet correct op. Dit soort details zorgt voor tijdverlies als je te snel test.
Je kunt dit direct hierna bevestigen:
echo "$SSH_AUTH_SOCK"
Op een persoonlijke computer is dat vaak voldoende. Op een gedeelde server laat ik liever geen agent de hele dag openstaan zonder tijdslimiet.
Voeg een SSH-sleutel met een beperkte geldigheidsduur toe.
Om een standaard USB-stick te laden:
ssh-add ~/.ssh/id_ed25519
U voert de wachtzin eenmalig in. Daarna verlopen alle verbindingen die deze sleutel gebruiken via de agent. Om te controleren wat er geladen is:
ssh-add -l -E sha256
Om de levensduur van de sleutel in de agent te beperken, gebruikt u -TVoorbeeld met één uur:
ssh-add -t 1h ~/.ssh/id_ed25519
Dit is mijn voorkeursinstelling op een beheerderswerkstation. Je behoudt het gemak van de agent, maar de sleutel blijft niet oneindig beschikbaar als je vergeet uit te loggen.
Een verbinding testen zonder het wachtwoord opnieuw in te voeren.
Zodra de sleutel is geladen, test u een normale verbinding:
ssh gebruiker@server
Als de sleutel overeenkomt met de server, zal SSH u niet opnieuw om het wachtwoord vragen. Als het niet lukt, probeer het dan opnieuw in de uitgebreide modus (verbose mode):
ssh -v gebruiker@server
Je ziet welke sleutel wordt aangeboden, of de agent reageert en waar de verbinding wordt geblokkeerd. Als het probleem waarschijnlijk bij de SSH-service aan de serverzijde ligt, heb ik daar ook een handleiding voor gepubliceerd. SSH opnieuw opstarten op Ubuntu is helemaal niet nodig. en nog een voor Installeer SSH opnieuw als het niet meer reageert..
Verwijder de sleutels van de agent.
Om een specifieke sleutel te verwijderen:
ssh-add -d ~/.ssh/id_ed25519
Om alle geladen sleutels te legen:
ssh-add -D
Als u de agent handmatig hebt gestart en deze wilt stoppen:
ssh-agent -k
Verwar deze commando’s niet met het verwijderen van het sleutelbestand in ~/.sshHier verwijder je alleen de sleutel uit het geheugen van de agent.
Wees voorzichtig bij het overdragen van SSH-agents.
Agentoverdracht, vaak geactiveerd met ssh -ADit maakt het mogelijk voor een externe machine om via uw lokale agent verkeer naar een andere server door te sturen. Het is nuttig in sommige omgevingen, maar ik zou het standaard vermijden.
Als de tussenliggende server gecompromitteerd raakt, wordt uw privésleutel niet gekopieerd, maar de agent blijft wel toegankelijk zolang de sessie open is. Voor een bastionhost of een machine waar u niet volledig de controle over hebt, kunt u het beste kiezen voor een speciale sleutel, een beperkte geldigheidsduur of een strengere SSH-configuratie.
Om langdurig geconcentreerd te kunnen werken zonder je werk kwijt te raken, scherm onder Linux Het lost nog een andere behoefte op: het openhouden van een beheerdersessie aan de serverzijde. Dit is geen vervanging voor… ssh-agentMaar de twee instrumenten vullen elkaar goed aan.
Het compromis dat ik zou nakomen
Verwijder het wachtwoord niet van uw SSH-sleutels om een paar seconden te besparen. Laad de sleutel in plaats daarvan in ssh-agent, controleer de actieve sleutels met ssh-add -lbeperk de duur met ssh-add -t Wanneer de context gevoelig is, leeg dan het middel aan het einde van de interventie.
De handleidingpagina’s van ssh-agent, ssh-add En ssh Ze beschrijven de beschikbare opties. Je hoeft niet alles te onthouden. Het belangrijkste is om een veilige sleutel te hebben, maar wel een die je kunt gebruiken zonder dat elke verbinding een gedoe wordt.