ตั้งค่า sftp เพื่อใช้รหัสผ่าน แต่ ssh จะไม่ใช้รหัสผ่าน


15

เป็นไปได้ไหมที่จะตั้งค่าผู้ใช้บน Ubuntu ด้วย openssh เพื่อให้ ssh ไม่ได้ใช้การพิสูจน์ตัวตนด้วยรหัสผ่าน แต่ sftp ทำได้

ฉันคิดว่าหากฉันเปลี่ยน/etc/ssh/ssh_configเป็นPasswordAuthentication yesสิ่งนี้ผู้ใช้สามารถใช้รหัสผ่านเพื่อเข้าสู่ระบบด้วย ssh และ sftp

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

คำตอบ:


26

ตามที่ฉันเข้าใจว่าคุณมี (อย่างน้อยสำหรับปัญหานี้) สองกลุ่มผู้ใช้ที่แตกต่างกันหนึ่งสามารถเข้าสู่ระบบผ่านทาง SSH และได้รับเปลือกโต้ตอบ (เรียกกลุ่มssh) และหนึ่งสามารถเข้าสู่ระบบผ่าน SFTP และรับ SFTP เท่านั้น เชลล์ (เรียกกลุ่มsftp)

ตอนนี้สร้างกลุ่มsshและsftpในระบบของคุณด้วยgroupaddใส่ผู้ใช้ที่เกี่ยวข้องในกลุ่ม ( gpasswd -a $USERNAME $GROUPNAME) และผนวกบรรทัดต่อไปนี้ในตอนท้าย ( นี่เป็นสิ่งสำคัญ! ) ของคุณsshd_configตั้งอยู่ที่/etc/ssh/sshd_config:

Match Group sftp
  PasswordAuthentication yes
  # Further directives for users in the "sftp" group

Match Group ssh
  PasswordAuthentication no
  # Further directives for users in the "ssh" group

อ่านข้อมูลเกี่ยวกับMatchคำสั่งในsshd_config (5)และเกี่ยวกับการอนุญาตให้ใช้รูปแบบในssh_config (5)

คุณจะต้องเริ่มsshกระบวนการนี้ใหม่เพื่อให้มีผล:

sudo /etc/init.d/ssh restart


6
นี่ไม่ใช่เอกสารที่ดี แต่จะมีการใช้คำสั่งจับคู่เพียงคำเดียวเท่านั้น คุณควรวางคำสั่งที่เฉพาะเจาะจงที่สุดไว้ด้านบน หากคุณแสดงรายการ sftp ก่อนผู้ใช้ที่อยู่ในทั้งสองกลุ่มจะได้รับอนุญาต PasswordAuthentication
Tobu

ขอบคุณ! มีsshกลุ่มอยู่ในกล่อง ubuntu ของฉันแล้วดังนั้นฉันจึงต้องการเพิ่มsftpและวางผู้ใช้ sftp ลงในกลุ่มนั้นเท่านั้น ฉันจะรวมคำตอบของคุณกับการใช้scponlyเพื่อป้องกันไม่ให้ผู้ใช้ sftp เข้าสู่ระบบ
dar

2
หากPasswordAuthenticationตั้งค่าไว้noสูงขึ้นจะยังใช้งานได้หรือไม่ จะMatch Groupแทนที่มันสำหรับผู้ใช้ SFTP? เพราะนั่นคือสิ่งที่ฉันมีและมันใช้งานไม่ได้ ฉันสามารถ ssh ด้วยปุ่ม แต่ไม่สามารถเป็นผู้ใช้ sftp
alphadogg

0

ไม่และฉันไม่เห็นว่าสิ่งนี้จะปรับปรุงความปลอดภัยได้อย่างไรจุดประสงค์คืออะไร

authorized_keysสามารถอนุญาตคำสั่งต่าง ๆ สำหรับคีย์ที่แตกต่างกันได้หากเป็นสิ่งที่คุณต้องการ มิฉะนั้นคุณมีตัวเลือกในการสร้างหลายบัญชีและใช้ acls หรือ sudo


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

@dar ตกลง; บัญชีที่แตกต่างกันแล้ว หากพวกเขาเป็นบัญชีเดียวกันใครบางคนที่รู้รหัสผ่าน sftp สามารถเขียนทับไฟล์โปรไฟล์บางไฟล์ (.ssh / rc, .profile, .bashrc …) และรับสิทธิพิเศษเช่นเดียวกับคนที่รู้ว่ากุญแจส่วนตัว
Tobu

0

รับแทงในที่มืดที่นี่ แต่คุณอาจพบว่ากระทู้นี้น่าสนใจ

มีความยุติธรรมที่จะติดคุกผู้ใช้ SFTP ของฉันไปยังไดเรกทอรีบ้านของพวกเขา?


ฉันไม่เห็นสิ่งใดเกี่ยวกับ PasswordAuthentication ให้แก้ไขฉันถ้าฉันผิด
Dar

ไม่ถูกต้อง ไม่ชัดเจนว่าคุณต้องการทำอะไรกับ SFTP vs SSH ฉันเห็นจากความคิดเห็นอื่น ๆ ที่คุณต้องการให้ผู้ใช้ใช้รหัสผ่านสำหรับ SFTP แต่ไม่ใช่สำหรับ SSH ทำไม?
Tyler K

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

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