SSH dengan alias pengguna?

10

Pertanyaan ini bukan duplikat. Harap baca sebelum Anda menandainya.

Apakah mungkin untuk menetapkan nama panggilan atau alias untuk pengguna di server Linux dan SSH ke server menggunakan nama panggilan? Saya berpikir sesuatu di sepanjang garis alias untuk berbagai perintah yang akan ditambahkan ke .bashrcatau .bash_aliasesberkas, misalnya:

alias grep='grep --color=auto'

Misalnya, jika ada persyaratan (aturan bisnis) untuk mengatur pengguna di server dengan nama lengkap mereka, misalnya, john_smithalih-alih hanya nama depan mereka ( john) tetapi kami ingin nama panggilan john_smith fruitloopsdan kami ingin John dapat:

ssh john_smith@ip_address

sebaik:

ssh fruitloops@ip_address

Jika memungkinkan, di mana pemetaan antara pengguna dan nama panggilannya akan diatur? Apakah pengguna fruitloopsjuga perlu ada di server?

Pertanyaan ini adalah tentang menyiapkan alias untuk pengguna, bukan host .

dw8547
sumber
1
Dengan alias host yang bisa Anda lakukanssh fruitloop
Takkat
Pertanyaan saya adalah tentang mengatur alias untuk pengguna, bukan host. fruitloopsmerujuk ke pengguna john_smith, bukan alamat IP.
dw8547
1
Saya percaya ini bukan pertanyaan yang sama ... +1 untuk dipertanyakan;)
Ravexina
1
Maaf atas kesalahpahaman saya - alias host SSH harus disiapkan pada klien tetapi yang Anda butuhkan adalah solusi yang disiapkan di server . Menarik kembali suara dekat saya.
Takkat
1
Saya pikir ini mungkin dengan beberapa tipu daya PAM (jika Anda menggunakan PAM itu). Saya mungkin dapat menemukan beberapa kode lama di sepanjang baris ini (jika saya melakukannya saya akan memposting sebagai jawaban).
Sumudu Fernando

Jawaban:

14

Setiap pengguna di linux hanya memiliki satu nama dan itu adalah satu-satunya nama. Anda dapat membuat alias untuk perintah bukan untuk pengguna.

Tetapi Anda dapat membuat pengguna kedua dengan UID, direktori home dan kata sandi yang sama yang akan membantu Anda.

Ziazis
sumber
Jadi /etc/passwdentri saya yang sesuai dengan pengguna ini akan terlihat seperti: john_smith:x:1001:1001:,,,:/home/john_smith:/bin/bashdan fruitloops:x:1001:1001:,,,:/home/john_smith:/bin/bash?
dw8547
2
Saya mencoba 3 pendekatan berbeda setelah menambahkan pengguna john_smithdengan UID = 1001. 1) adduser --home /home/john_smith --uid 1001 fruitloops , ini tidak berhasil ( addusergagal karena userid diambil) 2) useradd --home /home/john_smith --non-unique --uid 1001 fruitloops , ini berhasil tetapi mengarah pada beberapa perilaku yang tidak diinginkan 3) Akhirnya saya menambahkan baris fruitloops:x:1001:1001:,,,:/home/john_smith:/bin/bashlangsung ke /etc/passwdfile dan ini paling dekat dengan apa yang saya cari . SSH saya ke ip_addresssebagai fruitloopsdan tanah di /home/john_smithsaat kedatangan.
dw8547
1
Saya akan berdalih dengan kata-kata Anda di sini. Dalam skenario Anda, Anda telah membuat satu pengguna (1001) dengan dua nama login yang berbeda. Anda belum melakukannya di sini, tetapi tidak ada alasan kedua nama tersebut tidak memiliki direktori home dan shell login yang berbeda. Masuk sebagai "fruitloops" dan buat file. Sekarang periksa direktori dan Anda akan melihat bahwa john_smith ditampilkan sebagai pemilik file, karena itulah nama pertama yang ditemukan di / etc / passwd untuk uid 1001. Kita dapat berdebat tentang apakah john_smith adalah nama dan fruitloops adalah alias, atau john_smith adalah nama utama dan fruitloops sekunder, tapi itu semantik.
Monty Harder
2
"Anda dapat membuat pengguna kedua dengan UID, direktori home dan kata sandi yang sama" - kedengarannya seperti peretasan yang mengerikan yang tidak dijamin untuk bekerja di berbagai implementasi yang sesuai dengan POSIX. POSIX mensyaratkan bahwa hubungan antara nama pengguna dan ID pengguna berbeda dua arah.
David Foerster
@ dw8547 Bisakah Anda menjelaskan lebih banyak tentang perilaku yang tidak diinginkan dari perintah useradd?
Monty Harder
0

Saya belum mencoba ini tetapi opsi lain selain dua pengguna dipetakan ke UID tunggal (yang IMO tampaknya berbahaya tetapi opsi ini mungkin sama-sama berbahaya) adalah memiliki pengguna tunggal yang berfungsi sebagai pengalih berdasarkan kunci SSH. Ini adalah bagaimana repositori kontrol sumber yang menggunakan SSH biasanya bekerja.

Mari kita panggil pengguna me. Semua orang akan menggunakan alias ini.

ssh me@ip_address

Sekarang pengguna mememiliki semua kunci publik pengguna di ~/.ssh/authorized_keys.

command="sudo -i -u user-mapped-to-key" ssh-rsa key

Anda harus membuat pengguna mememiliki kemampuan untuk sudo sebagai pengguna lain dan Anda perlu mengelola mefile kunci yang diotorisasi.

Pokoknya saya belum menguji ini tetapi secara teori hal seperti ini harus bekerja.

Adam Gent
sumber