2013-08-13 14 views
5

Podczas wykonywania kompilacji Jenkins używa domyślnego użytkownika "jenkins". Moja kompilacja wymaga wielu wywołań SSH. Jednak te połączenia SSH nie powiodą się z wyjątkami weryfikacji hosta, ponieważ nie udało mi się połączyć klucza publicznego dla tego użytkownika na serwerze docelowym.Wywołanie polecenia SSH z Jenkinsa

Nie wiem, gdzie jest skonfigurowany domyślny użytkownik "jenkins" i dlatego nie można wygenerować wymaganego klucza publicznego do umieszczenia na serwerze docelowym.

Wszelkie sugestie dotyczące obu;

  1. sposób zmusić Jenkins użyć użytkownikowi zdefiniować
  2. sposób, aby umożliwić SSH dla domyślnego Jenkins użytkownika
  3. Fetch hasło dla domyślnego użytkownika Jenkinsa

Idealnie Chciałbym móc zarówno obojgu pomoc bardzo ceniona.

Rozwiązanie: Udało mi się uzyskać dostęp do domyślnego użytkownika Jenkins z żądaniem SSH z serwera docelowego. Po zalogowaniu się jako użytkownik Jenkinsa mogłem wygenerować publiczne/prywatne klucze RSA, co pozwoliło na dostęp bez hasła między serwerami.

+2

Czy możesz poprosić robotę, aby wydrukowało '% HOME%' (lub '$ HOME'), aby umieścić klucze publiczne i prywatne w tym, co Jenkins bierze pod uwagę' HOME (/ .ssh) '? – VonC

Odpowiedz

1

Domyślnym użytkownikiem "jenkins" jest użytkownik systemu, który uruchamia instancję Jnkinsa (master lub slave)). W zależności od instalacji ten użytkownik mógł zostać wygenerowany za pomocą skryptów instalacyjnych (deb/rpm/pkg itp.) Lub ręcznie przez administratora. Może on, ale nie musi być nazywany "jenkinsem".

Aby dowiedzieć się, pod jakim użytkownikiem działa instancja Jennkins, otwórz http: // JENKINS_SERVER/systemInfo, dostępny z menu Manage Jenkins.

Tam znajdziesz swój user.home i user.name. Na przykład. w moim przypadku na mistrza Mac OS X:

user.home /Users/Shared/Jenkins/Home/ 
user.name jenkins 

Po uzyskaniu tej informacji trzeba będzie zalogować się, że Jenkins serwer jako użytkownik z systemem Jenkins i ssh do tych zdalnych serwerów zaakceptować odciski ssh.

Alternatywnym (które nigdy nie próbowałem) byłoby użyć niestandardowego Jenkins zadanie przyjąć te odciski, których autorem jest na przykład uruchamiając następującą komendę w zadaniu SSH build:

ssh -o "StrictHostKeyChecking no" your_remote_server 

Ta ostatnia wskazówka jest oczywiście całkowicie nie do przyjęcia z czystego punktu widzenia bezpieczeństwa :)

+0

okrzyki, ale jak znaleźć hasło użytkownika, jeśli wygenerowałem jego system – cduggan

+0

@linuxlewis, możesz nie potrzebować hasła jenkins, jeśli albo # 1 zalogujesz się jako root, a potem zalogujesz się root jako Jenkins, albo # 2 użyje sudo, aby osiągnąć same lub # 3 użyj opcji alternatywnej (z StrictHostKeyChecking), aby umożliwić Jennkinsowi skonfigurowanie plików. – coffeebreaks

+0

Odpowiedź od Tuxdude w tym http://stackoverflow.com/questions/15314760/managing-ssh-keys-within-jenkins-for-git, może pomóc komuś. Zwłaszcza o "-s/bin/bash" –

0

Więc można by zrobić „praca”, który pisze klucze hostów jako stała, jak:

echo "....." > ~/.ssh/known_hosts 

wystarczy wypełnić kropki od ssh-keyscan -t rsa {ip}, po jej zweryfikowaniu.

3

Bo gdy o liczne urządzenia Slave może to być trudne do przewidywania tego, która z nich budować zostanie wykonany, a następnie jawnie nazywając ssh Gorąco polecam wykorzystaniem istniejących Jenkins wtyczek dla SSH wykonywanie zdalnych poleceń:

  • Publish Over SSH - wykonuje polecenia SSH lub przesyła pliki przez SCP/SFTP.
  • SSH - Wykonaj polecenia SSH.
Powiązane problemy