รหัสผ่าน ssh ไม่ทำงาน


35

ฉันได้พยายามตั้งค่ารหัสผ่าน ssh b / w Aให้น้อยลง BและBไปที่Aเช่นกัน สร้างคีย์สาธารณะและส่วนตัวโดยใช้ssh-keygen -trsaทั้งสองเครื่อง ใช้ssh-copy-idยูทิลิตี้เพื่อคัดลอกคีย์สาธารณะจากAการBเช่นเดียวกับการBA

SSH passwordless ทำงานจากAไปBแต่notจากการB Aฉันได้ตรวจสอบการอนุญาตของโฟลเดอร์ ~ / ssh / และดูเหมือนว่าจะเป็นเรื่องปกติ

A's .ssh สิทธิ์ของโฟลเดอร์:

-rw-------  1 root root 13530 2011-07-26 23:00 known_hosts
-rw-------  1 root root   403 2011-07-27 00:35 id_rsa.pub
-rw-------  1 root root  1675 2011-07-27 00:35 id_rsa
-rw-------  1 root root   799 2011-07-27 00:37 authorized_keys
drwxrwx--- 70 root root  4096 2011-07-27 00:37 ..
drwx------  2 root root  4096 2011-07-27 00:38 .

B's .ssh สิทธิ์ของโฟลเดอร์:

-rw------- 1 root root  884 2011-07-07 13:15 known_hosts
-rw-r--r-- 1 root root  396 2011-07-27 00:15 id_rsa.pub
-rw------- 1 root root 1675 2011-07-27 00:15 id_rsa
-rw------- 1 root root 2545 2011-07-27 00:36 authorized_keys
drwxr-xr-x 8 root root 4096 2011-07-06 19:44 ..
drwx------ 2 root root 4096 2011-07-27 00:15 .

Aเป็นอูบุนตู 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25 มีนาคม 2552) Bเป็นเครื่องเดเบียน (OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19 ตุลาคม 2550)

จากA:

#ssh B

ทำงานได้ดี

จากB:

#ssh -vvv A 
...
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/identity ((nil))
debug2: key: /root/.ssh/id_rsa (0x7f1581f23a50)
debug2: key: /root/.ssh/id_dsa ((nil))
debug3: Wrote 64 bytes for a total of 1127
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Offering public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1495
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
root@192.168.122.1's password: 

/root/id_rsaซึ่งเป็นหลักหมายความว่ามันไม่ได้ตรวจสอบโดยใช้ไฟล์ ฉันรันssh-addคำสั่งในทั้งสองเครื่องเช่นกัน

ส่วนการรับรองความถูกต้องของ/etc/ssh/sshd_configไฟล์คือ

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files

ฉันหมดความคิด ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม


การตั้งค่าของPermitRootLoginใน/etc/ssh/sshd_configบนคืออะไร?
taneli

@taneli: yesไม่เช่นนั้นผู้ใช้จะไม่ได้รับแจ้งให้ป้อนรหัสผ่าน
Lekensteyn

ในกรณีของฉันฉันต้อง uncomment "IgnoreUserKnownHosts ใช่" ในไฟล์ "/ etc / ssh / sshd_config" บน Ubuntu 12.04
Martin Magakian

คำตอบ:


24

เพียงตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนต่อไปนี้:

บนเครื่อง A

เปิดเทอร์มินัลแล้วป้อนคำสั่งดังนี้:

root@aneesh-pc:~# id

เพียงเพื่อให้แน่ใจว่าเราเป็นราก

หากคำสั่งดังกล่าวส่งออกสิ่งที่ต้องการด้านล่างเราเป็นคนอื่นเปลี่ยนไปรูทโดยใช้suคำสั่ง

uid=0(root) gid=0(root) groups=0(root)

1) สร้างคีย์

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:7d:30:7d:67:db:58:51:42:75:78:9c:06:e1:0c:8d root@aneesh-pc
The key's randomart image is:
+--[ RSA 2048]----+
|          ooo+==B|
|         . E=.o+B|
|        . . .+.*o|
|       . . .  ...|
|        S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

ฉันไม่ได้ใช้ข้อความรหัสผ่านใด ๆ หากคุณต้องการคุณสามารถใช้มันได้

2) คัดลอกกุญแจสาธารณะไปยัง.ssh/authorized_keysไฟล์ของเครื่อง B

root@aneesh-pc:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@mylap
root@mylap's password: 

ตอนนี้ลองเข้าสู่ระบบด้วยด้วยssh 'root@mylap'และเช็คอิน:

~/.ssh/authorized_keys

เพื่อให้แน่ใจว่าเราไม่ได้เพิ่มคีย์พิเศษที่คุณไม่ได้คาดหวัง

แทนที่ mylap ด้วยชื่อโฮสต์หรือ ip ของเครื่องที่คุณต้องการเข้าสู่ระบบ (เช่นเครื่อง B)

3) เข้าสู่ B โดยไม่ต้องใช้รหัสผ่าน

root@aneesh-pc:~# ssh root@mylap
Warning: Permanently added 'mylap,192.168.1.200' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Jul 27 15:23:58 2011 from streaming-desktop.local
aneesh@mylap:~$

บนเครื่อง B

4) สร้างปุ่มเพื่อเข้าสู่ระบบกลับไปที่เครื่อง A

root@mylap:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:9f:e7:81:ed:02:f9:fd:ad:ef:08:c6:4e:19:76:b1 root@streaming-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|          o   .  |
|         . + + o |
|        S o * E  |
|           = O . |
|            O +  |
|           + o o.|
|            . o+=|
+-----------------+

5) คัดลอกกุญแจสาธารณะใน.ssh/authorized_keysไฟล์A ของเครื่อง

root@mylap:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
root@aneesh-pc's password: 

ตอนนี้ลองเข้าสู่ระบบด้วยด้วยssh 'root@aneesh-pc'และเช็คอิน:

.ssh/authorized_keys

เพื่อให้แน่ใจว่าเราไม่ได้เพิ่มคีย์พิเศษที่คุณไม่ได้คาดหวัง

6) เข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่าน

ssh root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/


Last login: Tue Jul 26 18:52:55 2011 from 192.168.1.116

หากคุณสามารถทำตามขั้นตอนเหล่านี้ได้ ตอนนี้คุณมีสองเครื่องที่เปิดใช้งานการเข้าสู่ระบบ ssh-key (พับลิกคีย์)


ทำตามขั้นตอนทั้งหมด 6 ขั้นตอนตามที่ระบุตรวจสอบทุกสิ่งที่เกี่ยวข้องจนถึงขั้นตอนที่ 5 แต่อย่างใดขั้นตอนที่ 6 ไม่ทำงาน
4352 Cuurious

คุณสามารถให้ผลลัพธ์ของคำสั่งนี้: 'ssh -v root @ aneesh-pc' แทนที่ชื่อผู้ใช้และชื่อโฮสต์ด้วยของคุณ
aneeshep

15
พบว่าผู้กระทำผิดสิทธิ์ของ/root(770) drwxrwx--- 70 root root 4096 2011-07-27 00:37 .. นั้นเปิดเกินไป เปลี่ยนการอนุญาต drwxr-xr-xและตอนนี้ก็ใช้งานได้ sshไม่อาจจินตนาการความจริงที่ว่าได้รับอนุญาตไดเรกทอรีหลักที่ส่งผลต่อ
ลวงตา

1
@Cuurious จับได้ดีไดเรกทอรีบ้านของฉัน770ตั้งไว้เปลี่ยนเป็น750และถูกต้องกับโลก :) ฉันมักจะลืมว่า prems linux สามารถทำงานในสิ่งที่ตรงกันข้าม
บ่น

1
ความล้มเหลวในขั้นตอนที่ 3 ssh-copy-idทำงานหลังจากที่ฉันป้อนรหัสผ่าน แต่ฉันยังไม่สามารถเข้าสู่ระบบได้โดยไม่ได้รับแจ้งให้ใส่รหัสผ่านไฟล์ authorized_keys ของฉันมีข้อความของไฟล์. pub ของฉันและฉันเสนอกุญแจสำหรับการเข้าสู่ระบบ . ไม่มีประโยชน์. การอนุญาตในไดเรกทอรีทั้งหมดถูกต้อง
Matt Clark

44

หลังจากตั้งค่ารหัสผ่านไม่ต้องใช้ sshฉันยังคงถามรหัสผ่านผู้ใช้ของฉัน ดูที่/var/log/auth.logเครื่องระยะไกลชี้ให้เห็นปัญหา:

sshd[4215]: Authentication refused: bad ownership or modes for directory /home/<user>

ดังนั้นโปรดทำให้ถูกต้อง:

chmod o-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

ในขณะที่การห้ามไม่ให้ผู้ใช้รายอื่นเขียนทับ.sshโฟลเดอร์ของคุณจะเห็นได้ชัดว่าการมีข้อกำหนดเดียวกันสำหรับโฟลเดอร์บ้านของคุณนั้นยุ่งยากกว่า

ตรวจสอบ/etc/ssh/ssd_configเพื่อให้แน่ใจว่าRSAAuthenticationและPubkeyAuthenticationตัวเลือกจะไม่ถูกปิดใช้งาน ค่าเริ่มต้นคือyesว่าไม่น่าจะมีปัญหา


และตรวจสอบให้แน่ใจว่าโฟลเดอร์เหล่านั้นในรายการด้านบนเป็นของผู้ใช้ที่ถูกต้อง
GoalBased

ฉันได้เข้าสู่สถานการณ์นี้โดยการไม่ทำการตรวจสอบไฟล์เก็บถาวรไดรเวอร์ realtek ที่สร้างขึ้นอย่างไม่ดี มันเปลี่ยนเจ้าของในไดเรกทอรีที่ฉันไม่ได้ผูกไว้
Paul McMillan

2
โฟลเดอร์บ้านของคุณไม่สามารถเขียนได้เพราะถ้าเป็นเช่นนั้นฉันสามารถเปลี่ยนชื่อของคุณ~/.sshเป็นอย่างอื่นแล้วสร้างโฟลเดอร์ใหม่ด้วยรหัสของฉันเอง
Kevin Panko

2
! น่ากลัว ไม่ได้คิดเกี่ยวกับการดูในบันทึกบนเครื่องโฮสต์ ขอบคุณ!
user3099609

14

อาจเป็นปัญหาระดับสิทธิ์ที่สูงขึ้น คุณต้องลบสิทธิ์การเขียนจากกลุ่มและอื่น ๆ ไปยังไดเรกทอรีบ้านของคุณและไดเรกทอรี. ssh ในการแก้ไขปัญหาสิทธิ์เหล่านี้วิ่งหรือchmod 755 ~ ~/.sshchmod go-w ~ ~/.ssh

หากคุณยังคงมีปัญหาให้ออก grep ต่อไปนี้ในบันทึกของคุณ:

sudo egrep -i 'ssh.*LOCAL_USER_NAME' /var/log/secure

(แทนที่LOCAL_USER_NAMEด้วยชื่อผู้ใช้ในพื้นที่ของคุณ ... )

หวังว่าควรจะบอกคุณเพิ่มเติมเกี่ยวกับปัญหาของคุณโดยสมมติว่าข้อมูลการตรวจสอบความถูกต้อง sshd กำลังถูกบันทึกลงในบันทึกการรักษาความปลอดภัยซึ่งควรจะเป็นค่าเริ่มต้น หากคุณเห็นข้อผิดพลาดที่มีลักษณะเช่นนี้:

DATE HOSTNAME sshd [1317]: การรับรองความถูกต้องถูกปฏิเสธ: ความเป็นเจ้าของหรือโหมดสำหรับไดเรกทอรี / พา ธ / ถึง / บางส่วน / ไดเรกทอรี

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

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

TLDNR : การอนุญาตให้เขียนการเข้าถึงสำหรับกลุ่มและ / หรืออื่น ๆ ในโฮมไดเร็กตอรี่ของคุณจะทำการล็อกอินด้วยรหัสผ่านของ ssh.


2

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

หากคุณใช้ผู้ใช้ที่ไม่ใช่รูทsudo chown $USER -R ~/.sshอาจแก้ไขปัญหาของคุณได้

สิ่งอื่น ๆ ที่จะตรวจสอบ:

ตรวจสอบว่า B เป็นอยู่ในของid_rsa.pubauthorized_keys

ตรวจสอบของ/etc/ssh/sshd_configประกอบด้วย

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes

ใช่ฉันได้เปิดใช้งานบัญชีรูทในเครื่อง Ubuntu ดังนั้นการใช้งานในฐานะผู้ใช้รูทในทั้งระบบ
Cu ปลอม

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

1
คุณเป็นจริงเหตุผลที่ไม่ยอมรับคีย์ rsa เป็นองค์ประกอบสำคัญที่ฉันเดา :) sshd_config มีองค์ประกอบดังกล่าวข้างต้นฉันได้แก้ไขคำถามที่จะรวมเนื้อหาของเนื้อหาของ/etc/ssh/sshd_configไฟล์
31322 Cuurious

-3

ใน / etc / ssh / sshd_config เกี่ยวกับการเปลี่ยนแปลงเป้าหมาย

PermitRootLogin ไม่

ไปยัง

PermitRootLogin ใช่

จากนั้นจึงฆ่า - กดปุ่ม sshd PID ของคุณ:

root @ dzone2 # ps -ef | grep ssh root 28075 27576 0 พฤศจิกายน 17? 6:11 / usr / lib / ssh / sshd

root 17708 20618   0 10:09:30 pts/37      0:00 grep ssh root@dzone2 # kill -HUP 28075 root@dzone2 # ps -ef|grep ssh
root 17861 20618   0 10:09:44 pts/37      0:00 grep ssh
root 17852 27576   0 10:09:42 ?           0:00 /usr/lib/ssh/sshd

1
สิ่งนี้จะไม่ช่วย ปัญหาคือการเข้าสู่ระบบ SSH ที่ไม่มีรหัสผ่าน (การรับรองความถูกต้องกับคู่ของคีย์ RSA) ไม่ทำงาน คำแนะนำที่คุณให้ไว้สำหรับการrootเข้าสู่ระบบ SSH ไม่เกี่ยวข้องกับคำถามนี้อย่างสมบูรณ์เลย นอกจากนี้หากrootเปิดใช้งานบัญชี (ไม่ใช่ค่าเริ่มต้นใน Ubuntu) การเปิดใช้งานการrootเข้าสู่ระบบ SSH อาจเป็นอันตรายได้
Eliah Kagan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.