Truy cập SSH_AUTH_SOCK từ một người dùng không root khác


11

Kịch bản:

Tôi đang chạy ssh-agent trên PC cục bộ của mình và tất cả các máy chủ / máy khách của tôi được thiết lập để chuyển tiếp auth tác nhân SSH. Tôi có thể nhảy giữa tất cả các máy của mình bằng ssh-agent trên PC cục bộ. Điều đó làm việc.

Tôi cần có khả năng SSH vào máy như chính mình (user1) , đổi sang người dùng khác có tên user2 ( sudo -i -u user2 ), sau đó ssh sang một hộp khác bằng ssh-agent tôi đang chạy trên PC cục bộ. Hãy nói rằng tôi muốn làm một cái gì đó như ssh user3 @ machine2 (giả sử rằng user3 có khóa SSH công khai của tôi trong tệp ủy quyền của họ).

Tôi đã cấu hình sudo để giữ biến môi trường SSH_AUTH_SOCK .

Tất cả người dùng liên quan (người dùng [1-3]), là người dùng không có đặc quyền (không phải root).

Vấn đề:

Khi tôi thay đổi sang một người dùng khác, mặc dù biến SSH_AUTH_SOCK được đặt chính xác, (giả sử nó được đặt thành: /tmp/ssh-HbKVFL7799/agent.13799) user2 không có quyền truy cập vào ổ cắm được tạo bởi user1 - Cái nào Tất nhiên, nếu không thì user2 có thể chiếm đoạt khóa riêng của user1 và nhảy xung quanh như người dùng đó.

Kịch bản này chỉ hoạt động tốt nếu thay vì lấy shell qua sudo cho user2, tôi lấy shell qua sudo cho root. Bởi vì root tự nhiên có quyền truy cập vào tất cả các tệp trên máy.

Câu hỏi:

Tốt nhất là sử dụng sudo, làm cách nào tôi có thể thay đổi từ user1 sang user2, nhưng vẫn có quyền truy cập vào SSH_AUTH_SOCK của user1?

Câu trả lời:


12

Có hai điều bạn cần làm:

  1. Đặt SSH_AUTH_SOCKbiến để nó trỏ đến đúng tệp
  2. cho phép người dùng khác kết nối với ổ cắm (sử dụng quyền hệ thống tệp)

Do đó, những gì bạn có thể làm là:

Là user1, cho phép user2 kết nối với socket (toàn quyền truy cập vào socket và quyền để vào thư mục). Tôi hy vọng bạn /tmpcho phép ACL.

setfacl -m u:user2:rw $SSH_AUTH_SOCK
setfacl -m u:user2:x $(dirname $SSH_AUTH_SOCK)

Thay đổi người dùng khác và xuất biến chính xác.

sudo -u user2 env SSH_AUTH_SOCK=$SSH_AUTH_SOCK ssh user3@machine2

Nếu bạn muốn mở một vỏ tương tác bằng cách sử dụng sudo, bạn sẽ phải tự xuất SSH_AUTH_SOCKbiến sau khi bạn nhận được vỏ.


Cảm ơn câu trả lời. Điều đó hoạt động hoàn hảo, và có ý nghĩa tổng thể. Xin lỗi vì phản hồi muộn, tôi đã không nhận được thông báo rằng ai đó đã phản hồi.
Danny F
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.