Modo semplice per eseguire ssh-agent e ssh-add al login tramite SSH?


38

Sto cercando di eseguire automaticamente i seguenti comandi quando eseguo l'accesso al mio server tramite ssh:

ssh-agent /bin/bash
ssh-add ~/.ssh/id_rsa

La mia chiave ssh ha una passphrase e sto bene inserendola una volta per login.

Ho provato a inserirlo nel mio file .bashrc, tuttavia credo che ssh-agent avvii una nuova sessione bash. Quando provo ad accedere dopo averlo inserito nel mio .bashrc, si blocca e devo digitare 'esci' per vedere il prompt 'inserisci passphrace per sbloccare chiave'

Altri suggerimenti?

Il server esegue Ubuntu LTS


Perché l'agente chiave sul server? Dovrebbe essere sul client locale da cui ci si sta connettendo.
Zoredache,

@Zoredache Voglio essere in grado di fare git pulle simili sul server remoto
Fai clic su Aggiorna

Quindi eseguire un agente SSH sul computer locale e inoltrare l'agente.
Zoredache,

@Zoredache Grazie, non sapevo che fosse possibile. Tuttavia, mi piacerebbe comunque essere in grado di eseguire ssh-add / ssh-agent da uno script bash, anche dal mio computer locale. È una seccatura dover eseguire quei comandi manualmente.
Fai clic su Aggiorna

Risposte:


52

Puoi provare ad aggiungere questo:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

In questo modo ssh-agentnon avvia una nuova shell, si avvia in background e sputa i comandi della shell per impostare le variabili di ambiente appropriate.

Come detto nel commento, forse non si desidera eseguire affatto l'agente sull'host remoto, ma piuttosto sulla casella da cui si sta lavorando e utilizzare

ssh -A remote-host

per inoltrare i servizi dell'agente ssh locale all'host remoto.

Per motivi di sicurezza, è necessario utilizzare l'inoltro dell'agente solo con host gestiti da persone affidabili, ma è meglio che eseguire un agente completo in remoto in qualsiasi momento.


Quando lo sostituisco ssh-agent /bin/bashcon ssh-agent -s, e quindi provo a fare git pull, mi viene ancora chiesto la passphrase della chiave privata per sbloccarla. Non è proprio quello che voglio, voglio solo inserire la passphrase per fare ssh-add, e non doverlo ripetere ogni volta che eseguo qualsiasi comando git. Qualche idea?
Fai clic su Aggiorna

e l'esecuzione dell'agente localmente e l'utilizzo di ssh -A non è un'opzione per te? Il problema è che non è possibile "riavviare" l'agente ssh su ogni connessione. Ogni volta che lo avvii, non sa "niente" e quando aggiungi la chiave dovrai decodificarla ...
Tobi Oetiker

per il tuo file .ssh / config: Host host remoto ControlMaster Auto ControlPath ~/.ssh/master-%l-%r@%h:% p ControlPersist 2h
Tobi Oetiker

1
oops appena realizzato in bash hai bisogno di una valutazione extra di fronte alla chiamata dell'agente ssh .. aggiornata la mia risposta sopra
Tobi Oetiker

1
potresti creare un alias
Tobi Oetiker,

2

Un'alternativa è utilizzare il portachiavi di Funtoo . Quindi puoi attaccare questo one-liner nella tua shell bash:

eval $(keychain --eval id_rsa)

Questo fa la stessa cosa (avvia l'agente ssh, ecc.), Mentre non esegue un processo ssh-agent per ogni subshell. Invece cerca istanze "già in esecuzione" che possiedi e ti allega.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.