Thư mục nhà SSH trên mỗi tên miền phụ


12

Tôi tự hỏi liệu có thể đặt các thư mục chính khác nhau cho cùng một người dùng ssh cho mỗi tên miền phụ.

Vì vậy, giả sử bạn đăng nhập với ssh myuser@example.comthư mục chính của bạn sẽ là: /www/httpdocs/

Nếu bạn đăng nhập với ssh myuser@subdomain1.example.comthư mục chính của bạn sẽ là: /www/subdomain1/

Nếu bạn đăng nhập với ssh myuser@subdomain2.example.comthư mục chính của bạn sẽ là: /www/subdomain2/

...

Và như thế.

Câu trả lời:


19

SSH không thể làm điều đó vì giao thức SSH không bao gồm tên máy chủ được yêu cầu trong cuộc gọi. (HTTP là một trong số ít các giao thức bao gồm tên máy chủ được yêu cầu, đó là cách nó có thể được sử dụng cho lưu trữ ảo.) Có một số điều khác bạn có thể thử thay thế:

  • Bạn có thể tạo người dùng riêng cho từng tên miền phụ, nhưng với cùng UID là người dùng "chính". Người dùng tên miền phụ sẽ có thư mục chính của họ được đặt thành thư mục con. Thí dụ:

    useradd -o -u 4711 -d /var/www/subdomain1 subdomain1

  • Sử dụng mô-đun PAM để xác thực dựa trên tên miền phụ. Nếu một mô-đun như vậy tồn tại, tôi không biết nó sẽ là gì, nhưng nó có thể đáng để xem xét.

  • Sử dụng các khóa SSH riêng cho mỗi tên miền phụ. Về phía khách hàng, hãy thiết lập .ssh/configđể bạn có thể nhập ssh subdomainđể đăng nhập bằng khóa chính xác. Về phía máy chủ, có mỗi khóa công khai authorized_keysbắt đầu bằng các từ environment="DOMAIN=subdomain". Về phía máy chủ, cũng tạo một .ssh/rctệp sẽ cd vào thư mục bên phải dựa trên DOMAINbiến môi trường. Điều này đòi hỏi máy chủ phải được cấu hình PermitUserEnvironment yes.


Cảm ơn bạn! Âm thanh như một giải pháp tốt. Tôi sẽ thử.
kapale

Tôi thực sự muốn đề xuất giải pháp với các khóa SSH và đặc biệt, xuất các vars ENV từ máy gốc kết nối nhưng anh ta hỏi về việc có các thư mục HOME và không chỉ cdvào chúng nên tôi không nghĩ đó là một giải pháp tốt.
Florin Asăvoaie

+1, ý tưởng khóa SSH cực kỳ thông minh và tôi không biết bạn có thể đặt môi trường cho mỗi khóa như thế.
tgies

8

Điều này là KHÔNG thể vì giao thức SSH không gửi tên máy chủ được yêu cầu ở bất cứ đâu trong các gói.

Ý tưởng của tôi về việc thực hiện điều này sẽ là sử dụng một cái gì đó như OpenVZ để cô lập các tên miền phụ và có một IP riêng cho mỗi tên miền phụ.


Sẽ là một khả năng, nhưng là quá nhiều nỗ lực cho trường hợp tôi cần điều này. Cảm ơn bạn
kapale
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.