Direktori awal SSH per subdomain

12

Saya bertanya-tanya apakah mungkin untuk mengatur direktori home yang berbeda untuk pengguna ssh yang sama untuk setiap subdomain.

Jadi katakanlah Anda masuk dengan ssh [email protected]direktori home Anda akan: /www/httpdocs/

Jika Anda masuk dengan ssh [email protected]direktori home Anda akan: /www/subdomain1/

Jika Anda masuk dengan ssh [email protected]direktori home Anda akan: /www/subdomain2/

...

Dan seterusnya.

kapale
sumber

Jawaban:

19

SSH tidak dapat melakukan itu karena protokol SSH tidak menyertakan nama host yang diminta dalam panggilan. (HTTP adalah salah satu dari beberapa protokol yang menyertakan hostname yang diminta, yang dapat digunakan untuk hosting virtual.) Ada beberapa hal lain yang bisa Anda coba:

  • Anda dapat membuat pengguna terpisah untuk setiap subdomain, tetapi dengan UID yang sama dengan pengguna "utama". Subdomain-pengguna akan memiliki direktori home mereka diatur ke subdirektori. Contoh:

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

  • Gunakan modul PAM untuk mengautentikasi berdasarkan subdomain. Jika modul semacam itu ada, saya tidak tahu apa yang akan terjadi, tetapi mungkin layak untuk dilihat.

  • Gunakan kunci SSH terpisah untuk setiap subdomain. Di sisi klien, atur .ssh/configagar Anda bisa mengetik ssh subdomainuntuk membuatnya masuk dengan kunci yang benar. Di sisi server, minta setiap kunci publik authorized_keysdiawali dengan kata-kata environment="DOMAIN=subdomain". Di sisi server, juga membuat .ssh/rcfile yang akan cd ke direktori yang tepat berdasarkan DOMAINvariabel lingkungan. Ini mengharuskan server untuk dikonfigurasikan PermitUserEnvironment yes.

Jenny D
sumber
Terima kasih! Kedengarannya seperti solusi yang bagus. Saya akan mencobanya.
kapale
Saya sebenarnya ingin juga menyarankan solusi dengan kunci SSH dan, khususnya, mengekspor vars ENV dari mesin asal koneksi tetapi dia bertanya tentang memiliki direktori HOME dan tidak hanya cdke dalamnya jadi saya tidak berpikir itu adalah solusi yang baik.
Florin Asăvoaie
+1, ide kunci SSH sangat pintar dan saya tidak tahu Anda bisa mengatur lingkungan per kunci seperti itu.
tgies
8

Ini TIDAK mungkin karena protokol SSH tidak mengirim nama host yang diminta di manapun dalam paket.

Gagasan saya untuk mengimplementasikan ini adalah menggunakan sesuatu seperti OpenVZ untuk mengisolasi subdomain dan memiliki IP terpisah untuk setiap subdomain.

Florin Asăvoaie
sumber
Akan menjadi kemungkinan, tetapi terlalu banyak upaya untuk kasus saya membutuhkan ini. Terima kasih
kapale