2011-01-17 41 views
7

Ok, vì vậy tôi có Hudson (v1.393) đang chạy trong một máy ảo Ubuntu và mọi thứ hoạt động tốt. Tuy nhiên tôi đang cố gắng thêm một nô lệ Mac cho chủ Ubuntu và tôi đã chạy vào một vài vấn đề.Xác thực khóa SSH không thành công khi kết nối nô lệ Mac Hudson với máy chủ Linux

Tôi đã thiết lập khóa SSH sao cho từ dòng lệnh, máy ảo Ubuntu có thể ssh sử dụng khóa này thành người dùng có tên hudson trên máy Mac.

Trong cấu hình nô lệ Hudson, tôi có "Khởi chạy tác nhân phụ trên máy Unix qua SSH" đã chọn và đã nhập IP máy chủ, tên người dùng của người dùng trên slave và vị trí tệp khóa cá nhân của tôi trên máy chủ (mà đã được thêm vào tệp khóa được ủy quyền trên slave).

Tuy nhiên, chủ không thể kết nối với nô lệ. Nhìn vào nhật ký (bên dưới), nó đang cố xác thực bằng mật khẩu.

Đây có phải là sự thất bại cho nỗ lực SSH dựa trên khóa không thành công không?
Hudson có cố gắng xác thực bằng mật khẩu không và tôi có cần thay đổi thứ gì khác để sử dụng tệp khóa được xác định trong cấu hình không?
Có thể không khởi chạy các tác nhân nô lệ thông qua ssh trên máy mac? (Tôi biết tên của loại phương pháp nô lệ phóng explicity khẳng định Unix, nhưng tôi đã suy nghĩ (đọc: hy vọng) rằng nó sẽ làm việc với OS X quá)

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. 

Nếu bất cứ ai đã quản lý để chinh phục kiểu thiết lập này trước đây, hoặc có bất kỳ lời khuyên hay ý tưởng nào, tôi sẽ rất biết ơn! Cảm ơn

+1

Bạn đã thử không có khóa cá nhân và có mật khẩu? Kiểm tra xem nó có kết nối bằng phương thức đó không. – Sagar

+0

Bạn đã thử kết nối với hộp OS X từ máy ảo với jsut ssh để xem liệu auth key có được bật không? Phiên bản Máy chủ hoặc Máy khách của hộp OS X có phải không? Bạn có để trống mật khẩu khi tạo khóa không? – prodigitalson

+0

@Sagar: Chỉ cần thử sử dụng mật khẩu thay vì khóa. Không may mắn, cùng một thông điệp trong nhật ký. – mattbilson

Trả lời

16

Gần đây tôi đã gặp sự cố tương tự, cố gắng khởi chạy tác nhân trên máy Mac OS X 10.6 bằng SSH.

Để có được xác thực mật khẩu để làm việc bạn sẽ cần phải chỉnh sửa/etc/sshd_config vào nút khách hàng, thiết lập PasswordAuthentication yes

Trong bảng điều khiển Hudson mất nút ẩn, hãy chắc chắn cấu hình có một tên người dùng và mật khẩu hợp lệ và khởi chạy đại lý. Ngoài ra, hãy đảm bảo rằng thư mục Gốc FS FS thuộc sở hữu của người dùng xây dựng mà bạn đang kết nối.

Để xác thực ssh bằng mật khẩu, trước tiên hãy kiểm tra xem người dùng chủ nhân Hudson đang chạy như thế nào. Giả sử rằng đây là tomcat55. Tạo cặp khóa SSH công khai/riêng tư (với cụm mật khẩu trống), sau đó xác minh rằng người dùng Hudson có thể kết nối.

$ 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] 

Trên nút mac Hudson,/etc/sshd_config cần cho phép truy cập ít mật khẩu hơn.

Protocol 2 
PubkeyAuthentication yes 

Trong cấu hình nút xóa trường mật khẩu và đặt trường khóa cá nhân (trong ví dụ này là /home/tomcat55/.ssh/id_rsa).Bây giờ bạn có thể khởi chạy tác nhân:

[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

Cảm ơn Ronen! Việc xác thực mật khẩu hoạt động tốt. Tuy nhiên, nếu tôi xóa mật khẩu và dựa vào khóa ssh, nó vẫn không thành công và dường như Hudson vẫn dựa vào mật khẩu - "[01/02/11 13:11:45] [SSH] Xác thực là mattbilson/* *****. " Có cái gì khác trong sshd_config của tôi? Tôi có "RSAAuthentication yes", "PubkeyAuthentication yes", "AuthorizedKeysFile .ssh/authorized_keys" – mattbilson

+0

Plugin SSH rơi trở lại mật khẩu nếu nó không thể sử dụng khóa riêng để đăng nhập vào nút. Tôi muốn để trống trường mật khẩu trong khi bạn cố gắng tìm ra mọi thứ, để đảm bảo nó không phải là PasswordAuthentication cho phép nó. Ngoài ra, những gì đang xảy ra là ssh -i KEYFILE USER @ HOST. Nếu bạn có thể làm như vậy * như người dùng hudson * thì Hudson cũng có thể làm như vậy. Bạn có thể su để hudson người dùng, sau đó cố gắng ssh từ dòng lệnh? Nếu có bất kỳ vấn đề bạn có thể sẽ tìm thấy nó theo cách này. –

+0

Đúng rồi! Hudson chạy trên người dùng hudson, nhưng tôi đang dùng máy ubuntu với tư cách người dùng khác. Và hudson không có quyền cho tập tin quan trọng của tôi. Vì vậy, bây giờ tôi đã tạo ra một chìa khóa cho người dùng hudson và thêm nó vào máy Mac. Hóa ra đó là một sai lầm khá đơn giản. Cảm ơn vì thông tin về những gì hudson thực sự đang làm Ronen! – mattbilson

2

Kiểm tra tệp /var/log/auth.log trên máy Ubuntu. Tôi cá là bạn cần chmod 700 thư mục .ssh của người dùng hudson.

+0

Chỉ cần thử 700-ing tập tin đó, quyền truy cập bây giờ là "-xwx ------". Vẫn không có may mắn. – mattbilson

1

Tôi nghĩ câu trả lời đầu tiên (câu trả lời được chọn) là một câu trả lời tuyệt vời, nhưng tôi đã tìm thấy một trường hợp không phải là giải pháp duy nhất.

Trong trường hợp của tôi, tôi có nô lệ Mac OS đang hoạt động và sau đó tôi lấy máy Mac đó xuống và đưa máy tính mới lên. Tôi nghĩ rằng tôi chỉ có thể tinh chỉnh các thiết lập cho cấu hình của nút hiện có để trỏ nó vào máy Mac mới. Nó không hoạt động và tôi đã có tất cả các lỗi và vấn đề tương tự được mô tả trong suốt chuỗi tin nhắn này.

Sau đó, tôi đã đi vào và xóa nút và tạo lại nó với chính xác các cài đặt tương tự và nó hoạt động. Tôi nghi ngờ rằng dấu vân tay khóa SSH đã thay đổi và bằng cách xóa nút và tạo lại nó, tôi đã có thể làm cho nó hoạt động. Bất kể nó là gì, thành phần chính khiến nó thất bại không phải là một tùy chọn cấu hình.

Các vấn đề liên quan