ฉันจะทำให้ผู้ใช้สามารถเข้าสู่ระบบด้วยปุ่ม ssh ได้ แต่ไม่ต้องใช้รหัสผ่านได้อย่างไร


17

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

คำตอบ:


26

การใช้ passwd -dผิดธรรมดาอย่างน้อยบน Fedoraบนลินุกซ์ distro ใด ๆ ที่อิงกับ shadow-utils หากคุณลบรหัสผ่านด้วยpasswd -dหมายความว่าทุกคนสามารถลงชื่อเข้าใช้ผู้ใช้นั้น (บนคอนโซลหรือกราฟิก) โดยไม่ให้รหัสผ่าน

เพื่อบล็อกการล็อกอินด้วยการพิสูจน์ตัวตนด้วยรหัสผ่านให้รันซึ่งล็อคบัญชีเพื่อให้ผู้ใช้รูทเท่านั้นสามารถใช้งานได้ การล็อคจะดำเนินการโดยการแสดงรหัสผ่านที่เข้ารหัสลงในสตริงที่ไม่ถูกต้อง (โดยนำหน้าสตริงที่เข้ารหัสด้วย!)passwd -l username

ความพยายามในการเข้าสู่ระบบใด ๆ ไม่ว่าท้องถิ่นหรือระยะไกลจะส่งผลให้"รหัสผ่านไม่ถูกต้อง"ในขณะที่การเข้าสู่ระบบรหัสสาธารณะจะยังคงทำงาน บัญชีนั้นจะสามารถปลดล็อคด้วยpasswd -u username

หากคุณต้องการล็อคบัญชีโดยไม่ลบให้แก้ไข/etc/passwdและตั้งค่า/sbin/nologinหรือ/bin/falseในฟิลด์สุดท้าย ซึ่งจะส่งผลให้ "บัญชีนี้ไม่สามารถใช้งานได้ในขณะนี้" สำหรับการเข้าสู่ระบบ attemp ใด ๆ

โปรดดู passwd (1) man page


@guido: คำตอบของคุณจะไม่ได้รับการแจ้งเตือน คุณจะต้องเพิ่มความคิดเห็นในคำตอบของเขา (ฉันได้ทำไปแล้ว) โปรดทราบว่าผู้อ่านอาจอ่านคำตอบของคุณก่อนเขาควรเขียนคำตอบที่ตอบคำถามโดยตรง ทำได้ดีมากสำหรับการชี้ออก! มันใช้กับการกระจายลีนุกซ์ส่วนใหญ่ (อันที่ใช้ยูทิลิตี้เงาของลีนุกซ์).
Gilles 'หยุดชั่วร้าย'

@Gilles: ขอโทษฉันใหม่เพื่อ stackexchange; ฉันชี้ให้เห็นเพียงเล็กน้อยนี้เพราะมันเหมือนแนะนำให้ผู้ใช้ตั้งค่าบัญชีที่ไม่มีรหัสผ่านและมันก็เป็นที่ยอมรับและทำเครื่องหมายว่ามีประโยชน์ ...
guido

@guido: ไม่ต้องกังวลฉันแค่อธิบายวิธีทำให้คำเตือนของคุณมีประสิทธิภาพมากขึ้น ในความเป็นจริงในกรณีที่รุนแรงเช่นที่คำตอบไม่ถูกต้องอันตรายควรแนะนำให้แก้ไขการเพิ่มคำเตือนหรือการแก้ไข (หวังว่าคุณจะไม่พบกับสถานการณ์เหล่านี้บ่อยเกินไปบนไซต์)
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

@ guido: ที่จริงแล้วบนเดเบียนบีบ (ฉันไม่รู้เกี่ยวกับเลนนี่หรือจำหลัก) ที่ตอบไม่ทำงาน ไม่อนุญาตให้ทุกคนยกเว้นรูทเพื่อเข้าสู่ระบบอนุญาตให้ใช้คีย์ แต่รหัสผ่านไม่ได้น้อยลงเพียงแค่ยอมรับรหัสผ่านไม่ได้ ฉันประหลาดใจที่คุณสามารถ 'ลบรหัสผ่าน' และมันจะทำงานด้วยวิธีนี้ แต่มันก็ทำในสิ่งที่ฉันต้องการและสิ่งที่คำตอบนี้เป็นและเป็นคำตอบเดียวดังนั้นฉันจึงยอมรับ คำตอบนี้สมเหตุสมผลและฉันจะยอมรับเพราะฉันยินดีที่จะเดิมพัน distos อื่น ๆ จะอนุญาตให้ทุกคนเข้าสู่ระบบ bc โดยไม่ต้องใช้รหัสผ่านซึ่งแตกต่างจาก debian อย่างไรก็ตามคำตอบที่ดี

1
@ acidzombie24, @mattdn: พวกเขาสามารถลบnullokออกจากpam.d / password-authถ้า debian ใช้ pam (ฉันคิดอย่างนั้น แต่ฉันไม่ใช่ผู้เชี่ยวชาญ debian) อย่างไรก็ตาม passwd (1) manpage cleary ระบุว่าอาร์กิวเมนต์-dคือการสร้างบัญชีที่ไม่มีรหัสผ่านดังนั้นการเก็งกำไรเฉพาะ distro ที่นี่จึงเป็นเรื่องรองเนื่องจากคำถามนั้นกว้างมาก
guido

2

คุณไม่ได้ถาม SSH daemon โดยเฉพาะหรือไม่ที่จะยอมรับการพิสูจน์ตัวตนด้วยรหัสผ่าน แต่เป็นการพิสูจน์ตัวตนของคีย์ / รหัสผ่าน?

มองหาการเปลี่ยนแปลง sshd_configมองหาการเปลี่ยนแปลง

ชุด

PasswordAuthentication No
PreferredAuthentications publickey,hostbased,keyboard-interactive
Protocol 2,1

ค้นหาพารามิเตอร์การกำหนดค่าเพิ่มเติมได้ที่man ssh_config


0

อย่าเพิ่งตั้งรหัสผ่านสำหรับผู้ใช้ หากมีรหัสผ่านอยู่แล้วให้ลบออกโดยใช้passwd -l <username>หากมีรหัสผ่านเอามันออกไปโดยใช้

แต่มันยังคงเป็นไปได้ที่จะเข้าสู่ระบบในฐานะผู้ใช้รายนี้ - โดยใช้ authorized_keys หรือผ่านทาง su หรือ sudo จากบัญชีพิเศษ


1
ในฐานะที่เป็นออกแหลมโดย Guido , passwd -dทำให้ passwordless บัญชีในขณะที่คุณสามารถเข้าสู่ระบบได้โดยไม่ต้องพิมพ์รหัสผ่าน ใช้passwd -lเพื่อล็อคบัญชี (คิดว่าเป็นรหัสผ่านที่ไม่สามารถพิมพ์ได้)
Gilles 'หยุดชั่วร้าย'

ฉันได้เพิ่มคำเตือนไปยังโพสต์ของคุณแล้วเนื่องจากเป็นสิ่งที่อันตราย ฉันจะปล่อยให้คุณตัดสินใจว่าจะแก้ไขคำตอบของคุณหรือลบคำตอบของคุณ (ถ้าคุณคิดว่า guido เพียงพอแล้ว) หรือลบล้างคำเตือน
Gilles 'หยุดชั่วร้าย'

ทำไมโอ้ทำไมผู้คนถึงยอมรับคำตอบที่ไม่ได้ผล?
mathepic

@ คณิตศาสตร์: มันทำงานบนเดเบียน อย่างที่ฉันถาม

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