bagaimana Anda membuat kunci ssh untuk pengguna lain?

89

Saya mencoba membuat kunci ssh untuk pengguna lain. Saya login sebagai root. Bisakah saya mengedit file yang dihasilkan oleh ssh-keygen dan mengubah root ke pengguna yang saya inginkan?

pengguna962449
sumber
5
Jika Anda menghasilkan kunci untuk pengguna, Anda juga harus memiliki metode aman untuk mendapatkan kunci pribadi dan itu menyampaikan frase kepada pengguna. Jauh lebih baik pengguna menghasilkan kunci dan kemudian hanya mengirimi Anda kunci publik.
user9517
Tetapi bukankah itu sulit apakah Anda tidak mengizinkan login kata sandi? Jika saya hanya kunci, dan saya mengatur pengguna baru, mereka tidak bisa masuk untuk mengatur kunci mereka.
LVLAaron

Jawaban:

79

Anda dapat melakukannya dengan ssh-keygen, bagaimanapun, ingat bahwa kunci pribadi dimaksudkan untuk menjadi pribadi bagi pengguna sehingga Anda harus sangat berhati-hati untuk menjaga keamanannya - seaman kata sandi pengguna. Atau bahkan lebih aman, karena pengguna tidak akan diminta untuk mengubahnya saat masuk pertama kali.

ssh-keygen -f anythingmembuat dua file di direktori saat ini. anything.pubadalah kunci publik, yang dapat Anda tambahkan ke pengguna ~/.ssh/authorized_keysdi server tujuan mana pun.

File lain, yang baru saja dipanggil anythingadalah kunci pribadi dan karenanya harus disimpan dengan aman untuk pengguna. Lokasi default adalah ~username/.ssh/id_rsa(di sini dinamai id_rsa, yang merupakan default untuk kunci rsa). Ingat bahwa .sshdirektori tidak dapat dibaca atau ditulis oleh siapa pun selain pengguna, dan direktori home pengguna tidak dapat ditulisi oleh siapa pun selain pengguna. Demikian juga, izin harus ketat pada kunci privat, juga: Baca / tulis hanya untuk pengguna, dan direktori .ssh dan keyfile pribadi harus dimiliki oleh pengguna.

Secara teknis Anda bisa menyimpan kunci di mana saja. Dengan ssh -i path/to/privatekeyAnda dapat menentukan lokasi itu, saat menghubungkan. Sekali lagi, kepemilikan dan izin yang tepat sangat penting dan ssh tidak akan berfungsi jika Anda tidak memilikinya dengan benar.

nce
sumber
4
+1 untuk menyatakan bahwa itu adalah kunci pribadi (!)
mailq
51
Anda berasumsi bahwa pengguna adalah orang sungguhan. Jika login adalah pengguna non-interaktif yang digunakan untuk melakukan tugas utilitas (misalnya menjalankan skrip maine pada server jarak jauh), maka ya, Anda mungkin akan menghasilkan kunci untuk pengguna itu secara manual. Tentu saja, itu memiliki implikasi keamanannya sendiri, tapi itu cerita lain.
Rilindo
2
@Rilindo ssh -ike kunci pribadi untuk proses yang tidak istimewa adalah bagaimana saya menangani lebih dari beberapa proses pencadangan rsync otomatis. :)
Shadur
9
Saya tidak suka jawaban semacam itu yang mengatakan "Anda seharusnya tidak melakukan itu" tetapi tidak menjawab pertanyaan itu. Meskipun ini mungkin benar dan bermanfaat untuk konteks pertanyaan awal, orang lain mungkin memiliki pertanyaan yang sama dalam situasi yang berbeda. "Kunci ssh tidak boleh dibuat untuk pengguna lain": Itu benar dalam kasus sederhana. Tetapi pertimbangkan beberapa identitas orang fisik yang sama, misalnya. Mungkin ada beberapa akun di beberapa sistem, tidak semuanya memungkinkan Anda untuk menghasilkan kunci atau memungkinkan untuk melindungi kunci pribadi dengan tepat.
Gustave
usersatauuser's
Pengguna
135

Tidak ada informasi pengguna di kunci SSH .

Bidang terakhir dalam kunci publik adalah komentar (dan dapat diubah dengan menjalankan perintah berikut ssh-keygen -C newcomment).

Tidak perlu melakukan sesuatu yang istimewa untuk membuat kunci untuk pengguna lain, cukup letakkan di lokasi yang tepat dan atur izin.

Alex
sumber
5
Itu jawaban yang benar.
sebnukem
1
Saya hanya menguji dan mengonfirmasi, tidak hanya itu hanya komentar, tetapi dapat dihapus dan kunci masih berfungsi. Saya selalu berpikir itu penting! Terima kasih telah memberikan jawaban yang benar. Seperti komentar di atas, saya punya alasan untuk membuat kunci untuk pengguna lain, tetapi saya tidak akan mengatakan mengapa, jadi tidak ada argumen.
FreeSoftwareServers
18

Menjadi pengguna dengan menggunakan su dan menjalankan kunci sebagai pengguna itu:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):
Rilindo
sumber
Mengapa menentukan DSA?
Ram
Ups, kekuatan kebiasaan. Biarkan saya memperbarui.
Rilindo
4
Anda harus menggunakan rsa (atau mungkin salah satu varian kurva eliptik). dsa terbatas pada ukuran kunci yang tidak aman. rsa1 adalah format lawas untuk ssh1 yang seharusnya tidak digunakan lagi oleh siapa pun.
Peter Green
My joeuseradalah pengguna layanan, oleh karena itu saya tidak bisa masuk karena mereka. Bagaimana cara saya mengizinkan pengguna layanan (yang hanya menjalankan proses) memiliki kunci ssh?
Jonathan
@ JonathanLeaders Anda akan menentukan shell untuk pengguna ketika menjadi pengguna itu. Sesuatu seperti ini: `` `[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: Pengguna FTP: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: peringatan: tidak dapat mengubah direktori ke / var / ftp: Tidak ada file atau direktori seperti ini. Akun ini saat ini tidak tersedia. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` `
Rilindo
6

Seperti yang terlihat di sini , Anda dapat menggunakan chmod untuk mengubah izin baca dari folder pengguna yang ingin Anda tambahkan kunci SSH.

vim /home/username/.ssh/authorized_keys

Kemudian, cukup tempel kunci ke baris baru di bagian bawah file itu

Justin Kowalsky
sumber
1
Tautan sudah mati ...
Nyxynyx