คุณจะสร้างคีย์ ssh สำหรับผู้ใช้รายอื่นได้อย่างไร


89

ฉันกำลังพยายามสร้างคีย์ ssh สำหรับผู้ใช้รายอื่น ฉันเข้าสู่ระบบในฐานะ root ฉันสามารถแก้ไขไฟล์ที่สร้างโดย ssh-keygen และเปลี่ยนรูทเป็นผู้ใช้ที่ฉันต้องการได้หรือไม่?


5
หากคุณสร้างรหัสสำหรับผู้ใช้คุณจะต้องมีวิธีที่ปลอดภัยในการรับรหัสส่วนตัวและเป็นรหัสผ่านให้กับผู้ใช้ ผู้ใช้สร้างรหัสได้ดีขึ้นมากจากนั้นเพียงส่งรหัสสาธารณะถึงคุณ
user9517

แต่นั่นไม่ใช่เรื่องยากไหมที่คุณไม่อนุญาตให้ลงชื่อเข้าใช้ด้วยรหัสผ่าน ถ้าฉันเป็นคีย์เท่านั้นและฉันตั้งค่าผู้ใช้ใหม่พวกเขาไม่สามารถเข้าสู่ระบบเพื่อตั้งค่าคีย์ของพวกเขา
LVLAaron

คำตอบ:


79

อย่างไรก็ตามคุณสามารถทำเช่นนั้นได้ด้วยssh-keygenจำไว้ว่าคีย์ส่วนตัวนั้นมีความเป็นส่วนตัวของผู้ใช้ดังนั้นคุณควรระมัดระวังให้ดีเพื่อให้ปลอดภัย - ปลอดภัยเหมือนกับรหัสผ่านของผู้ใช้ หรือแม้กระทั่งปลอดภัยกว่าเนื่องจากผู้ใช้ไม่น่าจะต้องเปลี่ยนมันเมื่อเข้าสู่ระบบครั้งแรก

ssh-keygen -f anythingสร้างสองไฟล์ในไดเรกทอรีปัจจุบัน anything.pubเป็นกุญแจสาธารณะซึ่งคุณสามารถผนวกเข้ากับผู้ใช้~/.ssh/authorized_keysในเซิร์ฟเวอร์ปลายทางใดก็ได้

ไฟล์อื่นที่เรียกว่าanythingเป็นกุญแจส่วนตัวและควรเก็บไว้อย่างปลอดภัยสำหรับผู้ใช้ ตำแหน่งเริ่มต้นจะเป็น~username/.ssh/id_rsa(ชื่อที่นี่id_rsaซึ่งเป็นค่าเริ่มต้นสำหรับคีย์ rsa) จำไว้ว่า.sshไดเรกทอรีไม่สามารถอ่านหรือเขียนได้โดยทุกคนยกเว้นผู้ใช้และไดเรกทอรีหลักของผู้ใช้นั้นไม่สามารถเขียนได้โดยผู้ใช้ทุกคนยกเว้นผู้ใช้ ในทำนองเดียวกันการอนุญาตจะต้องเข้มงวดกับไพรเวตคีย์เช่นกัน: การอ่าน / เขียนสำหรับผู้ใช้เท่านั้นและไดเร็กทอรี. ssh และไพรเวตคีย์ไฟล์ต้องเป็นเจ้าของโดยผู้ใช้

ในทางเทคนิคคุณสามารถเก็บกุญแจได้ทุกที่ ด้วยssh -i path/to/privatekeyคุณสามารถระบุตำแหน่งนั้นในขณะที่เชื่อมต่อ อีกครั้งการเป็นเจ้าของและการอนุญาตที่เหมาะสมนั้นสำคัญมากและ ssh จะไม่ทำงานหากคุณไม่มีสิทธิ์


4
+1 สำหรับการแสดงว่าเป็นกุญแจส่วนตัว (!)
mailq

51
คุณกำลังสมมติว่าผู้ใช้เป็นคนจริง หากการเข้าสู่ระบบเป็นผู้ใช้ที่ไม่ใช่แบบโต้ตอบที่ใช้ในการปฏิบัติงานยูทิลิตี้ (เช่นการเรียกใช้สคริปต์เมนบนเซิร์ฟเวอร์ระยะไกล) ใช่แล้วคุณอาจจะสร้างคีย์สำหรับผู้ใช้ด้วยตนเอง แน่นอนว่ามันมีผลกระทบด้านความปลอดภัย แต่เป็นอีกเรื่องหนึ่ง
Rilindo

2
@Rilindo ssh -iเป็นคีย์ส่วนตัวสำหรับกระบวนการที่ไม่มีสิทธิพิเศษเป็นวิธีที่ฉันจัดการกับกระบวนการสำรองข้อมูล rsync อัตโนมัติมากกว่าสองสามกระบวนการ :)
Shadur

9
ฉันไม่ชอบคำตอบแบบนั้นที่พูดว่า "คุณไม่ควรทำอย่างนั้น" แต่อย่าตอบคำถาม แม้ว่าสิ่งนี้อาจถูกต้องและเป็นประโยชน์สำหรับบริบทของคำถามเดิมคนอื่น ๆ อาจมีคำถามเดียวกันในสถานการณ์อื่น "ไม่ควรสร้างคีย์ ssh สำหรับผู้ใช้รายอื่น": นั่นเป็นจริงในกรณีแบบง่าย ๆ แต่ลองพิจารณาอัตลักษณ์ที่หลากหลายของบุคคลที่มีรูปร่างเหมือนกันตัวอย่างเช่น อาจมีหลายบัญชีในหลาย ๆ ระบบไม่ใช่ทั้งหมดที่อนุญาตให้คุณสร้างคีย์หรืออนุญาตให้ปกป้องคีย์ส่วนตัวได้อย่างเหมาะสม
กุสตาฟ

usersหรือuser's
ผู้ใช้

135

นอกจากไม่มีข้อมูลของผู้ใช้ในคีย์จุ๊

ฟิลด์สุดท้ายในพับลิกคีย์คือข้อคิดเห็น (และสามารถเปลี่ยนแปลงได้โดยรันคำสั่งต่อไปนี้ssh-keygen -C newcomment)

ไม่จำเป็นต้องทำอะไรเป็นพิเศษเพื่อสร้างรหัสให้กับผู้ใช้รายอื่นเพียงแค่วางไว้ในตำแหน่งที่ถูกต้องและตั้งค่าการอนุญาต


5
นั่นคือคำตอบที่ถูกต้อง
sebnukem

1
ฉันเพิ่งทดสอบและยืนยันไม่เพียง แต่เป็นเพียงความคิดเห็นเท่านั้น แต่สามารถลบออกได้และปุ่มต่างๆยังคงใช้งานได้ ฉันคิดเสมอว่ามันสำคัญ! ขอบคุณที่ให้คำตอบที่ถูกต้อง เช่นเดียวกับความคิดเห็นด้านบนฉันมีเหตุผลในการสร้างคีย์สำหรับผู้ใช้รายอื่น แต่ฉันจะไม่พูดว่าทำไมจึงไม่มีข้อโต้แย้ง
FreeSoftwareServers

18

เป็นผู้ใช้โดยใช้suและเรียกใช้คีย์เป็นผู้ใช้นั้น:

[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):

ทำไมต้องระบุ DSA
ราม

อ๊ะพลังแห่งนิสัย ให้ฉันอัปเดต
Rilindo

4
คุณควรใช้อาร์เอสเอ (หรือเป็นหนึ่งในตัวแปรเส้นโค้งแบบ eliptic) dsa ถูก จำกัด ไว้ที่ keysizes ที่ไม่ปลอดภัย rsa1 เป็นรูปแบบดั้งเดิมสำหรับ ssh1 ซึ่งไม่มีใครควรใช้อีกต่อไป
ปีเตอร์กรีน

ฉันjoeuserเป็นผู้ใช้บริการดังนั้นฉันจึงไม่สามารถเข้าสู่ระบบได้ ฉันจะอนุญาตให้ผู้ใช้บริการ (ที่เพิ่งเรียกใช้กระบวนการ) มีคีย์ ssh ได้อย่างไร
Jonathan

@JonathanLeaders คุณจะระบุเชลล์สำหรับผู้ใช้เมื่อเป็นผู้ใช้นั้น บางสิ่งเช่นนี้: `` `[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: ผู้ใช้ FTP: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: คำเตือน: ไม่สามารถเปลี่ยนไดเรกทอรีเป็น / var / ftp: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวบัญชีนี้ไม่สามารถใช้งานได้ในขณะนี้ [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` `
Rilindo

6

เท่าที่เห็นที่นี่คุณสามารถใช้ chmod เพื่อเปลี่ยนสิทธิ์การอ่านของโฟลเดอร์ของผู้ใช้ที่คุณต้องการเพิ่มคีย์ SSH

vim /home/username/.ssh/authorized_keys

จากนั้นเพียงวางกุญแจไปที่บรรทัดใหม่ที่ด้านล่างของไฟล์นั้น


1
การเชื่อมโยงจะตาย ...
Nyxynyx
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.