2011-01-17 22 views
7

Ok, quindi ho Hudson (v1.393) in esecuzione su una macchina virtuale Ubuntu e tutto funziona correttamente. Tuttavia sto cercando di aggiungere uno slave Mac al master di Ubuntu e ho riscontrato alcuni problemi.Autenticazione chiave SSH non riuscita quando si collega Mac Hudson slave al master Linux

Ho impostato le chiavi SSH in modo che dalla riga di comando, la VM di Ubuntu possa ssh utilizzando la chiave in un utente chiamato hudson sul Mac.

Nella configurazione slave Hudson, ho selezionato "Avvia agenti slave su macchine Unix tramite SSH" e ho inserito l'IP dell'host, il nome utente dell'utente sullo slave e la posizione del file della mia chiave privata sul master (che è stato aggiunto al file delle chiavi autorizzato sullo slave).

Tuttavia, il master non riesce a connettersi allo slave. Guardando il log (sotto), sta provando ad autenticare usando una password.

Si tratta di una riduzione per un tentativo SSH basato su una chiave fallita?
Hudson sta solo provando ad autenticare usando una password, e ho bisogno di cambiare qualcos'altro per fargli usare il file chiave che è definito nella configurazione?
Non è possibile avviare agenti slave tramite ssh su un mac? (So ​​che il nome di questo tipo di metodo di lancio schiavo dichiara esplicitamente di Unix, ma stavo pensando (leggi: sperando) che avrebbe funzionato con OS X troppo)

Log

[01/14/11 10:38:07] [SSH] Opening SSH connection to 10.0.1.188:22. 
[01/14/11 10:38:07] [SSH] Authenticating as hudson/******. 
java.io.IOException: Password authentication failed. 
at com.trilead.ssh2.auth.AuthenticationManager.authenticatePassword(AuthenticationManager.java:319) 
at com.trilead.ssh2.Connection.authenticateWithPassword(Connection.java:314) 
at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:565) 
at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.java:179) 
at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:184) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
at java.lang.Thread.run(Thread.java:636) 
Caused by: java.io.IOException: Authentication method password not supported by the server at this stage. 
at com.trilead.ssh2.auth.AuthenticationManager.authenticatePassword(AuthenticationManager.java:289) 
... 9 more 
[01/14/11 10:38:07] [SSH] Connection closed. 

Se qualcuno è riuscito a conquistare questo tipo di set up prima, o ha qualche consiglio o idea, sarei molto grato! Grazie

+1

Hai provato senza la chiave privata e con una password? Verifica se si connette utilizzando tale metodo. – Sagar

+0

Hai provato a connetterti alla casella OS X dalla VM con jsut ssh per verificare se l'autenticazione della chiave è abilitata? La versione OS X box Server o Client? Hai lasciato la password vuota quando hai generato la chiave? – prodigitalson

+0

@ SAG: appena provato a usare una password piuttosto che una chiave. Nessuna fortuna, gli stessi messaggi nel registro. – mattbilson

risposta

16

Recentemente ho incontrato lo stesso problema, cercando di avviare un agente su un computer Mac OS X 10.6 utilizzando SSH.

Per ottenere l'autenticazione della password per lavorare è necessario modificare il file/etc/sshd_config sul nodo client, impostando PasswordAuthentication yes

Nel cruscotto Hudson prendere la linea nodo, assicurarsi che la configurazione ha un nome utente e una password validi e avviare l'agente. Assicurarsi inoltre che la directory radice remota di sia di proprietà dell'utente di creazione che si sta connettendo come.

Per l'autenticazione ssh senza password, controllare innanzitutto l'utente su cui è in esecuzione il master Hudson. Supponiamo che questo sia tomcat55. Genera una coppia di chiavi SSH pubblica/privata (con una passphrase vuota), quindi verifica che l'utente di Hudson possa connettersi.

$ ssh-keygen -t rsa 
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/tomcat55/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/tomcat55/.ssh/id_rsa. 
Your public key has been saved in /home/tomcat55/.ssh/id_rsa.pub. 

$ # authorize the hudson master on the hudson node 
$ scp /home/tomcat55/.ssh/id_rsa.pub [email protected]:~/.ssh/authorized_keys 
$ # test the connection 
$ ssh -i /home/tomcat55/.ssh/id_rsa [email protected] 

Sul nodo Hudson Mac, il file/etc/sshd_config ha la necessità di consentire l'accesso senza password.

Protocol 2 
PubkeyAuthentication yes 

Nella configurazione del nodo cancellare il campo password e impostare il campo chiave privata (in questo esempio è /home/tomcat55/.ssh/id_rsa).Si dovrebbe ora essere in grado di lanciare l'agente:

[01/19/11 22:38:44] [SSH] Opening SSH connection to macnode:22. 
[01/19/11 22:38:44] [SSH] Authenticating as hudson with /home/tomcat55/.ssh/id_rsa. 
[01/19/11 22:38:45] [SSH] Authentication successful. 
+0

Grazie Ronen! L'autenticazione della password funziona correttamente. Tuttavia, se rimuovo la password e mi affido alla chiave ssh, fallisce ancora, e Hudson sembra ancora fare affidamento sulla password - "[01/02/11 13:11:45] [SSH] Autenticazione come mattbilson/* ***** ". È qualcosa d'altro nel mio sshd_config? Ho "RSAAuthentication yes", "PubkeyAuthentication yes", "AuthorizedKeysFile .ssh/authorized_keys" – mattbilson

+0

Il plug-in SSH torna alla password se non può utilizzare la chiave privata per accedere al nodo. Lascerò il campo della password vuoto mentre provate a capire le cose, per assicurarmi che non sia l'autenticazione della password che lo lascia entrare. Inoltre, ciò che sta accadendo è ssh -i KEYFILE USER @ HOST. Se puoi farlo manualmente * come utente di hudson *, allora Hudson dovrebbe essere in grado di farlo anche tu. Sei in grado di su utente su hudson, quindi prova a ssh dalla riga di comando? Se c'è qualche problema, molto probabilmente lo troverai in questo modo. –

+0

Questo è tutto! Hudson gira sull'utente hudson, ma io sono sulla macchina di Ubuntu come utente diverso. E hudson non aveva i permessi per il mio file chiave. Così ora ho creato una chiave per l'utente hudson e l'ho aggiunta al Mac. Risulta che è stato un errore piuttosto semplice. Grazie per le informazioni su quello che Hudson stava facendo davvero Ronen! – mattbilson

2

Controllare il file /var/log/auth.log sulla macchina Ubuntu. Scommetto che è necessario chmod 700 la directory .ssh dell'utente hudson.

+0

Ho appena provato il file 700, ora le autorizzazioni sono "-rwx ------". Ancora senza fortuna. – mattbilson

1

credo che la prima risposta (quella selezionata) è una risposta impressionante, ma ho trovato un caso in cui non è l'unica soluzione.

Nel mio caso ho uno slave Mac OS che funzionava e poi ho tolto il Mac e ne ho fatto uno nuovo. Pensavo di poter modificare le impostazioni per la configurazione del nodo esistente per puntarlo sul nuovo Mac. Non ha funzionato e ho avuto tutti gli stessi errori e problemi descritti in questo thread di messaggi.

Quindi sono entrato, ho cancellato il nodo e l'ho ricreato con esattamente le stesse impostazioni e ha funzionato. I sospetto che l'impronta digitale della chiave SSH è cambiata e cancellando il nodo e ricreandolo sono riuscito a farlo funzionare. Qualunque cosa sia, il componente chiave che ha causato il fallimento non è un'opzione di configurazione.