2013-08-13 22 views
5

Jenkins tiếp tục sử dụng người dùng "jenkins" mặc định khi thực thi các bản dựng. Xây dựng của tôi yêu cầu một số cuộc gọi SSH. Tuy nhiên, các cuộc gọi SSH này không thành công với các trường hợp ngoại lệ xác minh máy chủ vì tôi chưa thể kết nối vị trí khóa công khai cho người dùng này trên máy chủ đích.Gọi lệnh SSH từ Jenkins

Tôi không biết nơi người dùng "jenkins" mặc định được định cấu hình và do đó không thể tạo khóa công khai bắt buộc để đặt trên máy chủ đích.

Mọi đề xuất cho một trong hai;

  1. Một cách để buộc Jenkins sử dụng một người dùng i xác định
  2. Một cách để cho phép SSH cho mặc định Jenkins dùng
  3. Fetch mật khẩu cho mặc định 'Jenkins' dùng

Lý tưởng nhất Tôi muốn có thể làm cả hai giúp đỡ rất nhiều đánh giá cao.

Giải pháp: Tôi có thể truy cập người dùng Jenkins mặc định bằng yêu cầu SSH từ máy chủ đích. Khi tôi đã đăng nhập với tư cách người dùng jenkins, tôi có thể tạo khóa RSA công khai/riêng tư sau đó cho phép truy cập miễn phí mật khẩu giữa các máy chủ

+2

Bạn có thể yêu cầu công việc in '% HOME%' (hoặc '$ HOME') để đặt khóa công khai và riêng tư vào những gì Jenkins xem là' HOME (/. Ssh) '? – VonC

Trả lời

1

Người dùng hệ thống 'jenkins' mặc định là người dùng hệ thống đang chạy phiên bản jenkins của bạn). Tùy thuộc vào cài đặt của bạn, người dùng này có thể đã được tạo bởi kịch bản cài đặt (deb/rpm/pkg, v.v.), hoặc được quản trị viên của bạn thủ công. Nó có thể hoặc không thể được gọi là 'jenkins'.

Để tìm hiểu người dùng jenkins của bạn đang chạy cái gì, hãy mở http: // $ JENKINS_SERVER/systemInfo, có sẵn từ trình đơn Quản lý Jenkins của bạn.

Ở đó bạn sẽ tìm thấy user.home và user.name của mình. Ví dụ. trong trường hợp của tôi trên một bậc thầy Mac OS X:

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

Khi bạn có thông tin đó bạn sẽ cần phải đăng nhập vào máy chủ mà jenkins như là người dùng chạy Jenkins và ssh vào các máy chủ từ xa để chấp nhận các dấu vân tay ssh.

Một thay thế (mà tôi chưa bao giờ thử) sẽ được sử dụng một công việc Jenkins tùy chỉnh để chấp nhận những dấu vân tay bằng cách ví dụ chạy lệnh sau đây trong một SSH xây dựng nhiệm vụ:

ssh -o "StrictHostKeyChecking no" your_remote_server 

Mẹo cuối cùng là dĩ nhiên hoàn toàn không thể chấp nhận từ một quan điểm an ninh tinh khiết của xem :)

+0

cổ vũ nhưng làm cách nào để tìm mật khẩu người dùng nếu hệ thống của tôi được tạo – cduggan

+0

@linuxlewis, bạn có thể không cần mật khẩu jenkins nếu bạn đăng nhập bằng root sau đó đăng nhập root bằng jenkins hoặC# 2 sử dụng sudo để đạt được tương tự, hoặC# 3 sử dụng tùy chọn thay thế (với StrictHostKeyChecking) để cho phép jenkins thiết lập các tệp. – coffeebreaks

+0

Trả lời từ Tuxdude trong http://stackoverflow.com/questions/15314760/managing-ssh-keys-within-jenkins-for-git này, có thể giúp ai đó. Đặc biệt, về '-s/bin/bash' –

0

vì vậy, người ta có thể thực hiện một "công việc" mà viết các phím máy chủ như một hằng số, như:

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

chỉ cần điền các dấu chấm từ ssh-keyscan -t rsa {ip}, sau khi bạn xác minh.

3

Bởi vì khi có nhiều máy nô lệ nó có thể là khó để dự đoán trên đó của họ xây dựng sẽ được thực hiện, chứ không phải sau đó gọi một cách rõ ràng ssh Tôi rất đề nghị sử dụng hiện Jenkins plug-ins cho SSH thực hiện một lệnh từ xa:

  • Publish Over SSH - thực thi lệnh SSH hoặc truyền tệp qua SCP/SFTP.
  • SSH - thực thi lệnh SSH.