Chạy 'sudo' qua SSH


8

Tôi đang viết một kịch bản để đăng nhập vào một loạt các máy từ xa và chạy lệnh trên chúng. Tôi đã thiết lập các khóa để người dùng chạy tập lệnh không phải nhập mật khẩu của từng máy mà chỉ nhập cụm mật khẩu vào đầu tập lệnh.

Vấn đề là lệnh trên các máy từ xa yêu cầu sudochạy. Và đồng thời, toàn bộ quan điểm của tập lệnh là loại bỏ người dùng phải nhập mật khẩu nhiều lần. Có cách nào để tránh gõ mật khẩu cho sudo? Thay đổi quyền của lệnh trên các máy từ xa không phải là một tùy chọn.

Câu trả lời:


8

Đối với sudo, bạn có thể cho phép người dùng chạy sudo mà không cần hỏi mật khẩu, hãy thử man sudoers. Bạn có thể chỉnh sửa tập tin /etc/sudoersbằng cách phát visudolệnh. Nó phải đặc biệt vì nếu không thì tệp không được tải lại chính xác. Các dòng kết quả (ở đây được lấy từ các ví dụ trong chính tệp) phải là:

## Allows people in group wheel to run all commands
# %wheel    ALL=(ALL)   ALL

## Same thing without a password
%wheel  ALL=(ALL)   NOPASSWD: ALL

Cảm ơn bạn. Thật buồn cười vì đồng nghiệp của tôi đã đề xuất một giải pháp theo cùng một dòng như thế này, ngay trước khi bạn đăng câu trả lời của mình. Bạn có thể thêm rằng tập tin cần chỉnh sửa /etc/sudoersvà nó cũng có thể được chỉnh sửa bằng cách chạysudo /usr/sbin/visudo
vahidg

8
Nếu bạn biết lệnh bạn muốn chạy, bạn có thể không muốn chỉ định TẤT CẢ các lệnh .. Bit của lỗ hổng bảo mật, bạn biết.
Tom O'Connor

3
@Tom O'Connor: Đúng, tôi chỉ cung cấp lệnh cần thiết. Sẽ đưa ra một ví dụ ở đây vì mục đích hoàn chỉnh:%wesho ALL=NOPASSWD: /sbin/service httpd
vahidg

Ah, đủ công bằng. :)
Tom O'Connor

7

@Chúng tôi sho,

Bạn có thể làm những gì DaDaDom đã nói (nó sẽ hoạt động và nó đơn giản) hoặc bạn có thể muốn tăng cường thiết lập của mình bằng cách sử dụng mô-đun PAM có tên pam-ssh-agent-auth .

Quá trình cho các hệ thống Debian / Ubuntu khá đơn giản:

$ sudo aptitude install libssl-dev libpam0g-dev build-essential checkinstall
$ wget "http://downloads.sourceforge.net/project/pamsshagentauth/pam_ssh_agent_auth/v0.9.3/pam_ssh_agent_auth-0.9.3.tar.bz2"
$ tar -xjvf pam_ssh_agent_auth-0.9.3.tar.bz2
$ cd pam_ssh_agent_auth-0.9.3

$ ./configure --libexecdir=/lib/security --with-mantype=man

$ make
$ sudo checkinstall

Chỉnh sửa cấu hình sudo:

$ sudo visudo

Thêm những điều sau:

Defaults env_keep += SSH_AUTH_SOCK

Tiếp tục bằng cách thay đổi cài đặt sudo PAM:

$ sudo vi /etc/pam.d/sudo

Thêm dòng auth ngay phía trên 2 dòng @include hiện có :

auth [success=2 default=ignore] pam_ssh_agent_auth.so file=~/.ssh/authorized_keys
@include common-auth
@include common-account

Võngà!

sudo không có auth nhưng dựa vào SSH Agent để thực hiện xác thực mạnh mẽ, thay vì chỉ xóa mật khẩu khỏi cấu hình sudo.


1
Bạn cũng có thể muốn kiểm tra điều này
Andre de Miranda

1
authorized_keysPHẢI bị khóa để chỉ root mới có thể thay đổi nó - nếu không bạn cũng có thể vô hiệu hóa mật khẩu.
ijk


2

Câu trả lời của Andre de Miranda cung cấp một giải pháp hay bằng cách sử dụng pam_ssh_agent_auth , nhưng các phần đã lỗi thời. Đặc biệt là các /etc/pam.d/sudohướng dẫn khi sử dụng nhiều phiên bản Linux hiện tại.

Nếu bạn đang chạy Ubuntu 12.04 chính xác, tôi thực sự đã đơn giản hóa quy trình bằng cách cung cấp bản dựng pam_ssh_agent_auth từ ppa: ppa: cpick / pam-ssh-agent-auth .

Bạn có thể cài đặt gói bằng cách chạy:

sudo add-apt-repository ppa:cpick/pam-ssh-agent-auth
sudo apt-get install pam-ssh-agent-auth

Sau khi cài đặt, nếu bạn muốn sử dụng mô-đun PAM này với sudo, bạn sẽ phải định cấu hình cài đặt của sudo và cấu hình PAM, trong Ubuntu 12.04 chính xác, bạn có thể làm điều đó bằng cách tạo hai tệp sau:

/etc/sudoers.d/pam-ssh-agent-auth:

Defaults    env_keep+="SSH_AUTH_SOCK"

/etc/pam.d/sudo:

ent#%PAM-1.0

auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth       sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
@include common-auth
@include common-account
@include common-session-noninteractive

Nếu bạn đang sử dụng đầu bếp, quy trình trên có thể được tự động hóa với sách dạy nấu ăn của tôi, được tìm thấy tại một trong hai địa điểm sau:
https://github.com/cpick/pam-ssh-agent-auth
http: //community.opscode .com / cookbooks / pam-ssh-agent-auth .

Thư mục của cookbook fileschứa các tệp /etc/pam.d/sudo/etc/sudoers.d/pam-ssh-agent-authcác tệp được mô tả ở trên hoạt động với Ubuntu 12.04 chính xác và phải là điểm khởi đầu hữu ích khi sử dụng các phiên bản / bản phát hành khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.