SSH, passphrase, portachiavi, Impossibile aprire una connessione al tuo agente di autenticazione

6

Sarò molto sorpreso se qualcuno ha la risposta a questo. Ho cercato su Google per un lungo periodo di tempo, ma senza fortuna.

Come sviluppatore iOS che a breve accoglierà un nuovo membro del team, voglio configurare un server di integrazione continua in modo che chiunque effettui il check in del codice darà il via a una build, che a sua volta stabilirà lo stato di una build light un'indicazione visiva dello stato del codice. Se la build si rompe non rimarrà così a lungo perché vedremo una grande luce rossa.

Gli ingredienti che ho scelto per fare questo lavoro sono Jenkins , Git e un Mac mini. Giorno dopo giorno non avrò accesso fisico al mini ma costruisci luce è controllato da Ethernet - nessun problema.

Il primo passo per convincere Jenkins a gestire una build è quello di clonare il repository git. Per ovvi motivi, scarta qualsiasi vecchio codice e prende una copia dell'intero repository. Sto usando un git "URL del repository" di [email protected]:repo/ProjectName.git . Naturalmente ho fatto 'su - jenkins' e sono diventato utente jenkins, passando quindi attraverso il processo di scp id_rsa.pub [email protected] . Come gitfella ho aggiunto quella chiave pubblica a authorized_hosts .

La sorpresa è arrivata quando sono tornato a essere jenkins utente e ho provato ssh [email protected] - mi è stato chiesto il passphrase per jenkins. In questa fase mi sono reso conto che il clone del repository stava fallendo perché la passphrase non poteva essere inserita mentre Jenkins era in esecuzione senza una shell interattiva.

Il modo per ottenere la passphrase nel portachiavi è ssh-add -K (e prima di Lion I non ricordo di doverlo fare mai) ma questo non funziona in una shell ssh, fallisce con il messaggio Could not open a connection to your authentication agent. L'esecuzione di ssh-agent mostra le variabili di ambiente che devono essere impostate per consentire che ciò accada e, una volta fatto, ssh-add -K funziona. Quindi il clone git è OK. Poi ho pensato che il problema fosse risolto ma al prossimo login ssh mi è stato chiesto di nuovo la passphrase.

Ora ho la fase di clone git della build funzionante, ma preferirei non dover rimuovere completamente la passphrase per Jenkins ...

Come possono essere impostati i valori di ssh-agent in ogni richiamo di questo processo di generazione di Jenkins? Jenkins viene avviato eseguendo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist - sarebbe possibile impostare l'ambiente ssh-agent qui in qualche modo? Queste impostazioni permarrebbero fino a quando Jenkins (per avvio)? Sono riluttante a scherzare ora ho questo piccolo problema in gran parte ordinato, ma forse qualche esperto conosce la soluzione giusta.

    
posta Adam Eberbach 15.05.2012 - 08:21
fonte

2 risposte

1

Il comando ssh-add -K aggiunge la chiave al portachiavi di Apple, ma esiste un portachiavi specifico per SSH, non correlato a quello di Apple.

Funziona come un demone e interagisce solo con SSH.

Non so se questo ti aiuterà, ma ho la strong sensazione che lo farà.

Il portachiavi è disponibile come pacchetto homebrew, quindi se ottieni il nomebrew disponibile sul tuo sistema per installarlo digita brew install keychan . Dopo di ciò un man keychain sarà di grande aiuto.

    
risposta data 12.05.2014 - 14:35
fonte
0

Per quanto ho capito, il tuo problema è che quando esci dalla sessione avviando jenkins con il tuo ambiente ssh-agent, jenkins perde le credenziali di autenticazione, giusto?

Hai provato ad avviare jenkins in questo modo nella configurazione del tuo launch-agent?

ssh-agent jenkins (just as an example)

Ciò significa che invochi jenkins iniziali da ssh-agent, impostando tutti gli ambienti necessari e caricando le chiavi necessarie dal portachiavi.

    
risposta data 22.02.2017 - 03:49
fonte

Leggi altre domande sui tag