ติดตั้งกุญแจสาธารณะผ่าน ssh-copy-id สำหรับผู้ใช้รายอื่น


26

ssh-copy-idauthorized_keysสามารถนำมาใช้ในการติดตั้งกุญแจสาธารณะของคุณในระยะไกลเครื่อง สามารถใช้คำสั่งเดียวกันนี้เพื่อติดตั้งกุญแจสาธารณะของผู้ใช้รายอื่นได้sudoหรือไม่?

อัปเดต: ทั้งในตัวเครื่องและทางไกลกำลังใช้ Ubuntu 12.04

อัปเดต 2: อธิบายขั้นตอนการสร้างบัญชีผู้ใช้ใหม่และเพิ่มกุญแจสาธารณะ

  1. (ระยะไกล) สร้างบัญชีผู้ใช้ใหม่และตั้งเป็นสิทธิ์การเข้าถึงพับลิกคีย์ของผู้ใช้เท่านั้น
  2. (ในพื้นที่) สร้างรหัสสาธารณะสำหรับบัญชีผู้ใช้ใหม่ (ssh-keygen)
  3. โดยปกติฉันจะสร้างไดเรกทอรีและไฟล์.ssh/authorized_keysบนเซิร์ฟเวอร์ระยะไกลจากนั้นคัดลอกและวางกุญแจสาธารณะที่สร้างขึ้นในเครื่องไปยังบัญชีผู้ใช้ใหม่ สิ่งที่ฉันกำลังมองหาคือถ้าฉันสามารถใช้ssh-copy-idเพื่อติดตั้งกุญแจสาธารณะของผู้ใช้ที่สร้างขึ้นใหม่นี้โดยตรงในไดเรกทอรี ssh เพียงบันทึกสองสามคำสั่งเพิ่มเติม

คำตอบ:


12

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

cat ~/.ssh/id_rsa.pub | \
  ssh pi@192.168.1.25 \
  "sudo mkdir /root/.ssh; sudo tee -a /root/.ssh/authorized_keys"
  • แมวรหัสประเทศของฉัน
  • ไปป์ที่ ssh
  • ssh เชื่อมต่อกับราสเบอร์รี่ของฉันในฐานะผู้ใช้ ssh
  • บนรีโมตใช้ sudo เพื่อสร้าง /root/.ssh
  • จากนั้นใช้ sudo ด้วย "tee -a" เพื่อต่อท้าย stdin (ซึ่งถือกุญแจจากแมวตัวแรก) ไปที่ /root/.ssh/authorized_keys

เพียงรวมสิ่งนี้เข้าด้วยกันเป็นสคริปต์อาจเพิ่ม chmod / chown ลงบนรีโมทและคุณมีสิ่งที่คุณต้องการ


ที่สวยงามและขอบคุณสำหรับคำสั่งสลาย
Blake Frederick

1

ใช่ :) ตัวอย่างเช่นถ้าคุณถูกบันทึกเป็น ghost @ ubuntu และคุณ

ssh-copy-id root@host-ip

กว่าที่คุณจะเห็นบนเซิร์ฟเวอร์โฮสต์ในคีย์ไฟล์ที่ลงท้ายด้วย/root/.ssh/authorized_keys นั่นหมายความว่าผู้ใช้งานโกสต์ได้คัดลอกคู่กุญแจของเขาและไม่ต้องพิมพ์รหัสผ่านอีกต่อไป ฉันไม่แน่ใจว่ามันจะทำงานร่วมกับการตั้งค่าสถานะตอนนี้ แต่คุณสามารถเข้าสู่ระบบในฐานะผู้ใช้อื่นghost@ubuntu

-u <username>

su <user_name> 

จากนั้น ssh-copy-id ...


1
กุญแจจะถูกติดตั้ง/root/.ssh/authorized_keysแทน/home/ghost/.ssh/authorized_keysหรือไม่? ฉันเพิ่งอัปเดตขั้นตอนที่ฉันทำในปัจจุบันเพื่อติดตั้งกุญแจสาธารณะสำหรับผู้ใช้ใหม่ แค่มองหาวิธีที่ดีกว่า ขอบคุณ!
จริงใน

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

คุณสามารถระบุว่าผู้ใช้คนใดที่คุณจะคัดลอกคีย์ถ้าคุณต้องการเข้าสู่ระบบเป็น root กว่า ssh-copy-id root @ host-ip ถ้าคุณต้องการเป็นผีกว่า ssh-copy-id ghost @ host-ip
mirkobrankovic

1
ระบบได้รับการตั้งค่าให้อนุญาตให้เข้าสู่ระบบด้วยรหัสสาธารณะเท่านั้น เนื่องจากผู้ใช้ghostถูกสร้างขึ้นใหม่จึงไม่มีพับลิกคีย์สำหรับผู้ใช้ นั่นเป็นเหตุผลที่จำเป็นต้องติดตั้งกุญแจสาธารณะสำหรับผู้ใช้ก่อนจากนั้นจึงssh-copy-id ghost@host-ipจะใช้งานได้ แต่ขอบคุณฉันคิดว่าคำสั่งพิเศษบางอย่างบนเซิร์ฟเวอร์ระยะไกลจะไม่เป็นเรื่องใหญ่
จริง

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