วิธีใช้คีย์ SSH และปิดใช้งานการตรวจสอบรหัสผ่าน


12

ฉันพยายามเข้าถึง Mac จากระยะไกล (ฉันมีสิทธิ์เข้าถึง Mac เครื่องนี้) ผ่าน SSH จากคอมพิวเตอร์ไคลเอนต์ Linux เป้าหมายของฉันคือการเข้าถึง Mac เครื่องนี้จากนอกเครือข่าย การตั้งค่าการส่งต่อพอร์ตบนเราเตอร์ จากคอมพิวเตอร์ไคลเอนต์ของฉันฉันสามารถssh user@ipรับ IP สาธารณะและฉันสามารถใช้กับ Mac ได้ดังนั้นการส่งต่อพอร์ตจึงใช้งานได้

ตอนนี้ฉันต้องการตั้งค่าคีย์ SSH ฉันสร้างคีย์ SSH บนคอมพิวเตอร์ไคลเอนต์ของฉันแล้ว แต่ฉันต้องการรับ SSH Daemon บนการตั้งค่า Mac ก่อน ฉันแก้ไขและการตั้งค่า/etc/ssh_config PasswordAuthentication noฉันเริ่มต้นใหม่ SSH กับคำสั่งนี้แล้วsudo launchctl unload /System/Library/LaunchDaemons/ssh.plist sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plistเมื่อฉันพยายามที่จะ SSH จากลูกค้าอีกครั้งก็ยังคงถามรหัสผ่านของฉัน

ฉันดูที่โพสต์นี้และจากคำตอบที่ฉันเพิ่มลงUsePAM noในไฟล์กำหนดค่าและเริ่มบริการlaunchctlใหม่อีกครั้ง ฉันยังคงได้รับแจ้งให้ใส่รหัสผ่าน

ฉันยังพยายามแก้ปัญหาที่นี่ ฉันยังคงได้รับแจ้งให้ใส่รหัสผ่าน

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

คำตอบ:


13

ฉันกำลังแก้ไขไฟล์กำหนดค่าที่ไม่ถูกต้อง! แทนที่จะผมแก้ไข/etc/ssh_config private/etc/sshd_configฉันคิดว่านี่อาจจะใช้ได้เช่นกันหากฉันแก้ไข/etc/sshd_configตามคำตอบที่ได้รับการอัปเดตจาก @GhostLyrics แต่ฉันยังไม่ได้ทดสอบดังนั้นฉันจึงไม่สามารถพูดได้อย่างแน่นอน หลังจากนั้นฉันเริ่มบริการใหม่อีกครั้งsudo launchctl stop com.openssh.sshdและจากนั้นsudo launchctl start com.openssh.sshdฉันก็สามารถรับพฤติกรรมที่ต้องการได้ นี่คือแหล่งข้อมูลที่ฉันพบข้อมูลที่เกี่ยวข้อง: /superuser/364304/how-do-i-configure-ssh-on-os-x

นี่คือตัวเลือกการตั้งค่าที่ฉันเปลี่ยน:

PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

หลังจากนั้นฉันสามารถสร้างคีย์ SSH ได้สำเร็จบนคอมพิวเตอร์ไคลเอนต์ของฉันย้ายกุญแจสาธารณะไปที่~/.ssh/authorized_keysบน Mac และตั้งค่าการอนุญาตสำหรับไฟล์นั้นเป็น 644

มันเป็นสิ่งสำคัญที่จะทราบว่าสิทธิ์เหล่านั้นมีการฉันคีย์สาธารณะ การอนุญาตให้ใช้ไพรเวตคีย์ของฉันตั้งไว้ที่ 600 บนคอมพิวเตอร์ไคลเอนต์ของฉัน นี่คือจริงๆที่สำคัญถ้าคุณมีทั้งภาครัฐและภาคเอกชนที่สำคัญของคุณใน~/.sshโฟลเดอร์และมีผู้ใช้หลายคนในระบบ หากคุณคีย์ส่วนตัวสิทธิ์มีค่าเท่ากับ 644 แล้วใด ๆ ที่ผู้ใช้สามารถอ่านคีย์ส่วนตัวของคุณและแอบอ้างเป็นตัวคุณ นอกจากนี้สิทธิ์สำหรับ~/.sshโฟลเดอร์ควรเป็น 700


5
ภายใน/etc/sshd_configและ/private/etc/sshd_configเป็นไฟล์เดียวกัน :)
GhostLyrics

8

/etc/ssh/ssh_configเป็นไฟล์กำหนดค่าสำหรับลูกค้าที่ใช้หากคุณไม่มีไฟล์เฉพาะเจาะจงในโฮมไดเร็กตอรี่ของคุณ สิ่งที่คุณต้องการแก้ไขคือ/etc/ssh/sshd_configอันใดอันหนึ่งสำหรับเซิร์ฟเวอร์

คุณอาจต้องการตั้งค่าPermitRootLogin without-password(หรือno) และที่PasswordAuthentication noนั่น


อัปเดต: เนื่องจากคุณใช้งานโยเซมิตีไฟล์จึงเป็น/etc/sshd_configไปตามคำตอบนี้: https://apple.stackexchange.com/a/167405/11135

เพื่อเพิ่มเติมอย่างละเอียดว่าทำไมมันยังคงแจ้งเมื่อตั้งค่าPasswordAuthentication noใน/etc/ssh/ssh_configมันเป็นสิ่งสำคัญที่จะเข้าใจสิ่งที่คุณกำหนดค่า "เมื่อทำการเชื่อมต่อขาออกผ่าน SSH อย่าเสนอการรับรองความถูกต้องด้วยรหัสผ่าน"


ฉันไม่ได้มีเพียง/etc/ssh/ssh_config /etc/ssh_configฉันวิ่งบนโยเซมิตี ฉันลองแล้วPasswordAuthentication noแต่มันยังคงขอรหัสผ่าน
beznez

อ่าฉันเข้าใจแล้ว นั่นไม่ใช่สิ่งที่ฉันต้องการ ฉันต้องการ SSH จากไคลเอนต์ Linux ของฉันไปยัง Mac ด้วยรหัสและไม่มีรหัสผ่าน ฉันควรเปลี่ยนสิ่งใดสำหรับการเชื่อมต่อขาเข้า
beznez

/etc/sshd_configPasswordAuthentication no→ ขอโทษสำหรับความสับสน. โปรดแจ้งให้ฉันทราบว่าฉันสามารถทำให้คำตอบชัดเจนขึ้นได้อย่างไร :)
GhostLyrics

ฉันยังคงได้รับพฤติกรรมเดียวกัน มันแจ้งให้ฉันใส่รหัสผ่านเมื่อฉันเปลี่ยนจากเครื่อง Linux เป็น Mac
beznez

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