Tôi đã vật lộn với vấn đề đặc biệt này hầu hết thời gian trong ngày, và đã đạt được MỘT SỐ tiến bộ, nhưng tôi vẫn còn một chút bế tắc. Tôi muốn có thể xác thực phiên SSH bằng tệp khóa riêng và sau đó sử dụng cùng xác thực đó để xác thực các yêu cầu sudo. Hệ thống tôi đang kết nối TỪ là một hộp Windows sử dụng Putty và Pagete. Hệ thống tôi đang kết nối TO là một hộp Ubuntu chạy 13.10 Saucy (32 bit), và cụ thể là máy chủ OpenSSH. Tôi đã tạo thành công khóa RSA 4096 bit và có thể sử dụng khóa đó để kết nối với các phiên SSH mà không gặp sự cố.
Để tạo điều kiện cho việc xác thực sudo, tôi đang cố gắng cài đặt và sử dụng libpam-ssh-agent-auth. Nó có trên SourceForge và được ghi lại ở đây: http://pamsshagentauth.sourceforge.net/ Có rất nhiều thông tin và hướng dẫn trực tuyến về thư viện này, nhưng thông tin và hướng dẫn chủ yếu là lỗi thời và / hoặc cụ thể.
Một số tiến bộ của tôi: Tôi thấy rằng bạn phải cho phép chuyển tiếp tác nhân người dùng VÀ khởi động và chạy trong Putty để thành công tác nhân người dùng thực sự xuất hiện trên máy chủ Ubuntu. Tôi cũng đã phải thêm "AllowAgentForwarding yes" vào / etc / ssh / sshd_config và dòng "Mặc định env_keep + = SSH_AUTH_SOCK" thành / etc / sudoers (sau 3 dòng Mặc định khác). Những thay đổi này dường như đã cho phép ổ cắm xác thực SSH truyền tới các lệnh sudo, như đã được thử nghiệm trong thiết bị đầu cuối như thế này:
echo "$SSH_AUTH_SOCK"
/tmp/ssh-4LcT4GZtZ8/agent.6725
sudo echo "$SSH_AUTH_SOCK"
/tmp/ssh-4LcT4GZtZ8/agent.6725
Trước khi thực hiện những thay đổi này, tôi đã không nhận được SSH_AUTH_SOCK nào cả, và sau đó chỉ nhận được nó trong dấu nhắc lệnh thông thường, không phải trong sudo. Thực hiện các thay đổi được ghi lại ở trên cho phép ổ cắm xác thực thực hiện thông qua sudo.
Bước cuối cùng có vẻ là cài đặt libpam-ssh-agent-auth và sau đó thực hiện thay đổi cấu hình phù hợp thành /etc/pam.d/sudo. Tôi đã cố gắng tự biên dịch nó và cũng cài đặt các .deb được biên dịch sẵn từ hai PPA khác nhau như một phần trong nhiệm vụ của tôi để làm việc này (như tôi đã nói, đã cố gắng cả ngày) Bước cuối cùng này là điều khiến tôi bế tắc. Về cơ bản, mặc dù có những thứ rõ ràng được cấu hình đúng, tôi không thành công.
Theo hiểu biết của tôi, trường hợp thử nghiệm của tôi phải là chạy "sudo -K" và sau đó sudo bất kỳ lệnh nào. -K đặt lại bộ đếm thời gian sudo, buộc xác thực lại trong lần thử sudo tiếp theo.
Tôi đã không có thành công.
Tệp /etc/pam.d/sudo hiện tại của tôi:
#%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=~/.ssh/authorized_keys
auth requisite pam_unix.so nullok_secure
@include common-auth
@include common-account
@include common-session-noninteractive
Tôi nghĩ rằng đây có thể là một nơi tốt để đăng về những thứ này.