ฉันสามารถใช้การรับรองความถูกต้องของคีย์ SSH เพื่อเข้าสู่ระบบระยะไกลด้วยชื่อผู้ใช้อื่นได้หรือไม่


17

สมมติว่าฉันมีระบบรีโมตชื่อ "remotesystem" และบัญชีผู้ใช้ "foouser" บนระบบนั้น

ฉันรู้ว่าในระบบท้องถิ่นของฉันฉันสามารถสร้างคู่คีย์ SSH เป็นผู้ใช้ท้องถิ่น "foouser" ใส่กุญแจสาธารณะในไฟล์ "/home/foouser/.ssh/authorized_keys" บน "remotesystem" เมื่อฉัน SSH เป็น "foouser" จากระบบโลคัลของฉันเป็น "remotesystem" SSH ใช้คู่คีย์เพื่อพิสูจน์ตัวตนฉัน

แต่จะเกิดอะไรขึ้นถ้าชื่อผู้ใช้ในพื้นที่ของฉันไม่เหมือนกับชื่อผู้ใช้บนระบบระยะไกล นั่นคือถ้าฉันต้องการ SSH ในฐานะผู้ใช้ท้องถิ่น "baruser" ถึง "remotesystem" เห็นได้ชัดว่าฉันจะต้องสร้างคู่คีย์สำหรับ "baruser" และเพิ่มคีย์สาธารณะใน "/home/foouser/.ssh/authorized_keys" จากนั้นฉันควรจะสามารถ "ssh foouser @ remotesystem" ในขณะที่เข้าสู่ระบบในฐานะ "baruser" ในพื้นที่และ SSH จะใช้คู่คีย์เพื่อตรวจสอบสิทธิ์ใช่ไหม

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


ฉัน cranked ด้านเซิร์ฟเวอร์การบันทึกและมันพิสูจน์แล้วว่าเป็นปัญหากับการอนุญาตในไดเรกทอรีบ้านของผู้ใช้ระยะไกล แก้ไขปัญหา! ขอบคุณทุกคนที่ให้คำตอบ
Matt Hurne

คำตอบ:


11

ใช่คุณสามารถทำได้เช่นเดียวกับที่คุณอธิบาย

baruser @ ที่นี่ ~ $ ssh-add -l
4096 10: b3: fd: 29: 08: 86: 24: a6: da: 0a: dd: c6: 1e: b0: 66: 6a id_rsa (RSA)
baruser @ ที่นี่ ~ $ ssh foouser @ remotesystem
ข้อความ motd ฯลฯ
foouser @ remotesystem ~ $

ขอบคุณสำหรับคำตอบ. ฉันรู้ว่าฉันไม่ได้บ้า ... :-) ต้องมีบางอย่างผิดปกติกับการกำหนดค่าเซิร์ฟเวอร์ SSH ของระบบระยะไกลป้องกันการตรวจสอบคีย์ให้ทำงานโดยสิ้นเชิง
Matt Hurne

4
หากคุณทำ "ssh -V foouser @ remotesystem" คุณสามารถรับข้อมูลบางอย่างเกี่ยวกับสิ่งที่ผิดพลาด บ่อยครั้งที่มันเป็นข้อผิดพลาดในการอนุญาตใน ~ / .ssh
Paul Tomblin

4
ไม่ใช่ -V (แสดงหมายเลขเวอร์ชั่น) แต่ -vvv (verbosity สูงสุด)
Leven

10

มันเป็นการหลบกัน แต่ .....

หากคุณใช้ชื่อผู้ใช้เดียวกันกับเซิร์ฟเวอร์ระยะไกลอยู่เสมอคุณอาจพบว่ามีประโยชน์ในการเพิ่มโฮสต์ลงในการกำหนดค่า ssh ของคุณ:

Host remotesystem
    User baruser

ด้วยวิธีนี้คุณไม่จำเป็นต้องจำชื่อผู้ใช้เมื่อลงชื่อเข้าใช้และคุณจะต้องจัดการปัญหานั้นเมื่อมีปัญหาเกี่ยวกับกุญแจในอนาคต


5

ชื่อผู้ใช้ในพื้นที่ของคุณไม่สำคัญ (นอกเหนือจากรหัสส่วนตัวต้องอยู่ในไดเรกทอรีหลักของผู้ใช้ในพื้นที่) เพียงคัดลอกกุญแจไปยังauthorized_keysส่วนของผู้ใช้ระยะไกลและมันจะทำงาน


3

ด้วยปัญหาที่เกี่ยวข้องกับ ssh สิ่งแรกที่ต้องทำคือเปิดการใช้คำฟุ่มเฟื่อยของลูกค้า:

ssh user @ machine -vvv

หากสิ่งนี้ไม่สามารถให้ข้อมูลเชิงลึกใด ๆ แก่คุณเกี่ยวกับสิ่งที่ไม่ถูกต้องคุณต้องเปลี่ยนระดับการบันทึกบนเซิร์ฟเวอร์และรีสตาร์ท daemon

LogLevel DEBUG3

คุณควรค้นหาผลลัพธ์การดีบักใน /var/log/auth.log (หรือที่ใดที่เคยกำหนดค่า ssh เพื่อเข้าสู่ระบบ) เมื่อคุณพบปัญหาแล้วอย่าลืมตั้งกลับเป็นวิธีที่คุณพบ


2

สิทธิ์ในไดเรกทอรี. ssh บนทั้งสองเครื่องนั้นถูกต้องมาก โดยทั่วไปนั่นหมายถึง 700 ในไดเรกทอรี. ssh และสูงสุด 755 ในไดเรกทอรีภายในบ้าน นอกเหนือจาก 600 ในไฟล์ทั้งหมดในไดเร็กทอรี. ssh

หากผู้ใช้บนระบบรีโมตเป็นรูทตรวจสอบให้แน่ใจว่ารูทนั้นสามารถ ssh (PermitRootLogin ใน sshd_config) และคีย์สาธารณะนั้น (PubkeyAuthentication) และหากจำเป็น RSA (RSAAuthentication) จะเปิดใช้งาน


RSAAuthentication ไม่ใช่วิธีที่แยกจากกันอย่างสมบูรณ์หรือ
user1686

RSA เป็นหนึ่งในอัลกอริทึมกุญแจสาธารณะที่สนับสนุนโดย SSH (พร้อมด้วย DSA) มันเป็นวิธีเดียวใน SSH1
Alexandre Carmel-Veilleux

2

หากคุณเปิดใช้งาน SE Linux คุณจะต้องทำสิ่งต่อไปนี้

เพิ่มป้ายกำกับ SELinux เพื่อauthorized_keysให้สามารถเข้าถึงได้โดย sshd

semanage fcontext -a -t sshd_key_t ~foo/.ssh/authorized_keys
restorecon -Rv ~user/.ssh

0

ดูเหมือนว่าคุณกำลังทำสิ่งต่าง ๆ อย่างถูกต้อง แต่ตรวจสอบให้แน่ใจว่าสิทธิ์นั้นถูกต้องใน authorized_keys ควรตั้งค่าเป็น 600

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