พยายามที่จะ SSH ในคอมพิวเตอร์ระยะไกล แต่ยังคงขอรหัสผ่าน


18

พยายามที่จะ SSH ในคอมพิวเตอร์ระยะไกล แต่ยังคงขอรหัสผ่าน

ฉันมีคอมพิวเตอร์จำนวนหนึ่งที่ใช้ SElinux และมีเพียงหนึ่งในนั้นเท่านั้นที่ให้ฉันใช้ ssh ได้โดยไม่ต้องใช้รหัสผ่าน

ฉันทำ ssh-copy-id และฉันเห็นรหัสของฉันใน. ssh / authorized_keys

ฉัน chmod 700 .ssh และ chmod 600 ไฟล์ทั้งหมดใน. / ssh/*

หากฉันทำ ssh -v นี่คือผลลัพธ์ของฉัน:

OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to wcmisdlin05 [10.52.208.224] port 22.
debug1: Connection established.
debug1: identity file /home/jsmith/.ssh/identity type -1
debug1: identity file /home/jsmith/.ssh/id_rsa type 1
debug1: identity file /home/jsmith/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'wcmisdlin05' is known and matches the RSA host key.
debug1: Found key in /home/jsmith/.ssh/known_hosts:9
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_501' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_501' not found

debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Next authentication method: publickey
debug1: Offering public key: /home/jsmith/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/jsmith/.ssh/identity
debug1: Trying private key: /home/jsmith/.ssh/id_dsa
debug1: Next authentication method: password

มีคนช่วยบอกฉันหน่อยได้ไหมว่าทำไมมันไม่ทำงานบนคอมพิวเตอร์ระยะไกลเครื่องนี้


5
ดู/var/log/secure(ถ้าเป็นสิทธิ์) & /var/log/messages(ถ้าเป็น SELinux) มิฉะนั้นจะไม่ตรงกันระหว่างสิ่งที่อยู่ภายใน~/.ssh/authorized_keysและสิ่งที่ถูกส่งโดยไคลเอนต์ SSH
Aaron Copley

คำตอบ:


17

ฉันมักจะพบข้อผิดพลาดที่คล้ายกันในเครื่อง CentOS 6 ที่เกี่ยวข้องกับssh-copy-idและ SELinux

เมื่อssh-copy-idสร้างไฟล์คีย์ที่ได้รับอนุญาตจะสร้างไฟล์ด้วยสิทธิ์ที่เหมาะสม แต่มีป้ายกำกับ SELinux ไม่ถูกต้อง การแก้ไขสำหรับสิ่งนี้กำลังกู้คืนฉลากเป็นค่าเริ่มต้นของนโยบายโดยใช้คำสั่งนี้:

restorecon -R ~/.ssh


1
คำตอบที่ดี. แต่สำหรับมือใหม่ของ SELinux มันน่าสนใจที่จะรู้วิธีตรวจสอบรายการและตรวจสอบการอนุญาต
zrajm

14

สิ่งเหล่านี้จะดีบั๊กจากฝั่งเซิร์ฟเวอร์เสมอหากเป็นไปได้ หากคุณสามารถเริ่ม sshd บนพอร์ตอื่นในโหมดดีบั๊กมันจะบอกคุณทันทีว่าทำไมคีย์ถึงถูกปฏิเสธ (เดายากของฉันคือไดเรกทอรีบ้านของคุณเป็นกลุ่มที่เขียนได้) คุณสามารถยกตัวอย่างเช่นเริ่มต้น sshd ในโหมดการตรวจแก้จุดบกพร่องบนพอร์ต 2222 ด้วยแล้วเชื่อมต่อกับ/usr/sbin/sshd -d -p 2222ssh -p 2222 user@remotehost


4
ขอบคุณมากสำหรับการคาดเดาของคุณ (โฮมไดเรกทอรีคือกลุ่มที่เขียนได้) นั่นคือกรณีของฉัน
Sergei Kurenkov

@skwllsp - โปรดยอมรับคำตอบนี้ถ้ามันถูกต้องสำหรับกรณีของคุณ
Deer Hunter

1
@Deer Hunter คำถามที่ถูกถามโดยคนอื่นไม่ใช่ฉัน ฉันไม่สามารถยอมรับคำตอบนี้ได้
Sergei Kurenkov

@skwllsp - ช่วงเวลาอาวุโสจากฉันขอโทษ
Deer Hunter

chmod 744 ไปยังไดเรกทอรีบ้านของฉันแก้ไขมัน - มันเกี่ยวข้องกับคำตอบนี้ขอบคุณ!
Brandt Solovij

3

โปสเตอร์ที่อ้างถึง SElinux ทุบตีหัวของฉันฉันไม่ต้องการใช้ selinux แต่ลืมที่จะปิดการใช้งานและเซิร์ฟเวอร์ก็เปิดใช้ selinux เมื่อเปิดเครื่อง

ssh -vแก้ไขข้อบกพร่องช่วย คีย์ได้รับการยอมรับ:

debug1: Found key in /var/lib/amanda/.ssh/known_hosts:19
debug1: ssh_rsa_verify: signature correct

จากนั้นฉันก็พบข้อผิดพลาด

debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_502' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_502' not found

debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_502' not found

การแก้ไขของฉันคือการปิด selinux ด้วยsetenforce 0แล้วปิดการใช้งานใน / etc / selinux จากนั้นเข้าสู่ระบบ ssh รหัสผ่านไม่ทำงานสำหรับฉัน


1

ฉันเคยมีประสบการณ์นี้เมื่อไม่นานมานี้บน RHEL5 (ฉันไม่รู้ว่านี่เป็น distro ที่คุณใช้หรือไม่) และพบว่ามันก็ต่อเมื่อฉันใช้ ssh-copy-id ลอง scp'ing ไฟล์กุญแจไปยังโฟลเดอร์ที่ถูกต้องและแน่นอนการรีเซ็ตสิทธิ์


0

ในกรณีของฉันปัญหาอยู่ในรูปแบบของauthorized_keysไฟล์ที่ไม่ถูกต้อง

ควรจะมีการขึ้นบรรทัดใหม่ไม่มีในระหว่างนิยามรูปแบบ ( ssh-rss, ssh-dss.. ) และกุญแจสาธารณะของตัวเอง


0

ฉันมีปัญหาก่อนหน้านี้กับ ssh และ keyfiles ในโอกาสนั้นการเปลี่ยนชื่อรหัสของฉันเป็น " id_rsa" ช่วย น่าเสียดายที่ฉันมีคีย์ที่แตกต่างกันสำหรับเซิร์ฟเวอร์ที่แตกต่างกัน ดังนั้นวิธีการดังกล่าวจึงมีประโยชน์ จำกัด มันอาจช่วยได้ในครั้งเดียว

วันนี้ที่สองฉันมีข้อผิดพลาดนี้อีกครั้งในเซสชัน XTerm เพียงครั้งเดียวและทุกอย่างทำงานได้ดีในเซสชัน xterm อื่น ๆ อีก 6 ครั้งไปยังเครื่องเซิร์ฟเวอร์ / ท่อเดียวกัน ดังนั้นฉันจึงเปรียบเทียบผลลัพธ์ของฉันจากenvในทั้งสองเซสชัน ฉันพบว่านี่เป็นเซสชันการทำงานซึ่งไม่ได้อยู่ในเซสชันที่ไม่ทำงาน:

SSH_AUTH_SOCK=/run/user/1001/keyring/ssh 

ฉันวางการมอบหมายนั้นลงในเซสชันที่ไม่ทำงาน:

export SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
ssh  user@host
... Welcome ...

ในคำอื่น ๆ ที่แก้ปัญหาทำงานได้สำหรับฉัน

ฉันตรวจสอบ SSH_AUTH_SOCKET นิดหน่อย จากคำตอบนี้:

พา ธ ของซ็อกเก็ตไฟล์ยูนิกซ์ที่เอเจนต์ใช้สำหรับการสื่อสารกับกระบวนการอื่น

ฉันเดาว่านี่เป็นสิ่งสำคัญสำหรับการแก้ปัญหาที่สำคัญโดยอ้างอิงจากผลลัพธ์


-1

debug1: การเสนอคีย์สาธารณะ: /home/jsmith/.ssh/id_ rsa

...

debug1: ลองใช้คีย์ส่วนตัว: /home/jsmith/.ssh/id_ dsa

สำหรับฉันแล้วดูเหมือนว่าคีย์ส่วนตัว / สาธารณะไม่ตรงกัน ชื่อคีย์บอกเราว่ากุญแจสาธารณะคือกุญแจ RSA และกุญแจส่วนตัวคือ DSA

ลองสร้างคู่ใหม่และscpกุญแจสาธารณะไปยังเซิร์ฟเวอร์


หนึ่งสามารถตรวจสอบได้ว่าเป็นจริงกรณีนี้โดยการเปรียบเทียบลายนิ้วมือของสองปุ่มกับssh-keygen -l -f ~/.ssh/id_rsa' and ssh-keygen -l -f ~ / .ssh / id_rsa.pub` ฉันไม่เชื่อว่ามันจะเสนอกุญแจหากมีความไม่ตรงกัน ฉันคิดว่ามันเป็นเรื่องที่เซิร์ฟเวอร์ถูกปฏิเสธเนื่องจากเหตุผลยังไม่ได้กำหนดดังนั้นจึงลองอีกครั้ง
ตุ๋น

-2

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


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