Zarządzanie kluczami SSH w Jenkins dla Git

Próbuję uruchomić Jenkinsa z repozytorium hostowanym na Githubie(używając wtyczki Jenkins Git). Repozytorium ma wiele podmodułów git, więc nie jestem pewien, czy chcę próbować zarządzać wieloma kluczami wdrażania.

Moje osobiste konto Użytkownika na Githubie jest współpracownikiem każdego z projektów, które chcę uruchomić za pomocą Jenkinsa, więc wygenerowałem klucz SSH w /var/lib/jenkins/.ssh i dodałem go do mojego osobistego konta na Githubie.

Jednakże, kiedy próbuję dodać adres URL repozytorium do mojego Jenkinsa konfiguracja projektu, dostaję:

Failed to connect to repository : Command "git ls-remote -h [email protected]:***/***.git HEAD" returned status code 128:
stdout: 
stderr: Host key verification failed. 
fatal: The remote end hung up unexpectedly

Podobnie, kiedy planuję budowę dostaję:

stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly

Próbowałem również skonfigurować plik konfiguracyjny SSH tak, jak opisano tutaj , ale bezskutecznie.

Czy ktoś może rzucić jakieś światło? Dzięki

EDIT

Dodam, że używam CentOS 5.8

Author: David Birks, 2013-03-09

4 answers

Wygląda na to, że github.com host, z którym jenkins próbuje się połączyć, nie jest wymieniony w $HOME/.ssh/known_hosts Użytkownika Jenkins. Jenkins działa na większości dystrybucji jako użytkownik jenkins i dlatego ma swój własny katalog .ssh do przechowywania listy kluczy publicznych i known_hosts.

Najprostszym rozwiązaniem, jakie przychodzi mi do głowy, aby rozwiązać ten problem, jest:

# Login as the jenkins user and specify shell explicity,
# since the default shell is /bin/false for most
# jenkins installations.
sudo su jenkins -s /bin/bash

cd SOME_TMP_DIR
# git clone YOUR_GITHUB_URL

# Allow adding the SSH host key to your known_hosts

# Exit from su
exit
 62
Author: Tuxdude,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-09 21:39:14

Próbowałeś zalogować się jako użytkownik jenkins?

Spróbuj tego:

sudo -i -u jenkins #For RedHat you might have to do 'su' instead.
git clone [email protected]:your/repo.git

Często widzisz Błąd, jeśli host nie został dodany lub autoryzowany (dlatego zawsze ręcznie loguję się jako hudson / jenkins przy pierwszym połączeniu z github / bitbucket), ale ten link, który zawarłeś, podobno naprawia to.

Jeśli powyższe nie zadziała, spróbuj ponownie skopiować klucz. Upewnij się, że jest to klucz pub (tj.pub). Może przegapiłeś jakieś postacie?

 6
Author: Adam Gent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-09 19:26:15

Zgodnie z tym artykułem , Możesz spróbować wykonać następujące polecenie:

   ssh-add -l

Jeśli Twojego klucza nie ma na liście, to

   ssh-add /var/lib/jenkins/.ssh/id_rsa_project
 4
Author: RabitChang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-09 19:34:04

To działa dla mnie, jeśli masz config i plik klucza prywatnego w /Jenkins/.ssh / musisz chown (zmienić właściciela) dla tych 2 plików, a następnie Uruchom ponownie jenkins, aby instancja jenkins odczytała te 2 pliki.

 1
Author: Jianhong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-15 05:24:51