known_hosts ไม่ได้อัปเดต แต่ ssh บอกว่าเพิ่มไว้


2

เมื่อฉันเข้าสู่ระบบจาก termerv ไปยังเซิร์ฟเวอร์อื่น ssh ขอให้ฉันยืนยันลายนิ้วมือของโฮสต์ กว่าจะเตือนฉันว่ามันเพิ่มเข้ามาและเดินหน้าต่อไป หากฉันออกจากระบบทันทีและลงชื่อเข้าใช้สิ่งนี้จะเกิดขึ้นอีกครั้ง ฉันลองทำไฟล์ blank_hosts ตรวจสอบการอนุญาตแล้วลองใหม่อีกครั้ง ไฟล์ known_hosts ว่างเปล่า มีการหยุดชั่วคราวจำนวนหนึ่งระหว่างรายงานที่เพิ่มลายนิ้วมือให้กับโฮสต์ที่รู้จักและถูกถามรหัสผ่านกุญแจของฉัน

me@termserv:$ ssh me@10.0.X.X
The authenticity of host '10.0.X.X (10.0.X.X)' can't be established.
ECDSA key fingerprint is d4:a2:cf:42:0b:01:xx:e5:xx:7a:xx:93:xx:53:xx:b4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.X.X' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/me/.ssh/id_rsa':
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-23-generic x86_64)
...
me@10.0.X.X:$

ฉันตรวจสอบปัญหาพื้นที่ไดรฟ์ บนพาร์ติชันหลักของฉัน (ไม่มีพิเศษ / บ้าน) ฉันมีการใช้งานเพียง 3% syslog ของฉันไม่แสดงสิ่งที่เกี่ยวข้อง ถ้าฉันเรียกใช้ ssh ด้วย -vvv ฉันจะไม่ได้รับข้อมูลเพิ่มเติมใด ๆ ระหว่างมันโดยถามว่าฉันต้องการเชื่อมต่อและเตือนฉันหรือไม่ว่าจะมีการเพิ่มอย่างถาวรในโฮสต์ที่รู้จัก

ฉันได้ลองค้นหาคำเหล่านี้ใน OpenSSH webCVS repo แล้ว แต่ไม่พบผ่านทางเว็บไซต์ google: ทำการค้นหา

.ssh สิทธิ์ไดเรกทอรีคือ me:me drwx------

.ssh/known_hosts สิทธิ์ได้รับ me:me -rw-r--r-- และ -rw-------

นี่คือสิ่งที่เกิดขึ้น ฉันรวมเฉพาะส่วนระหว่างฉันบอกว่าใช่เพื่อเพิ่มและมันบอกว่ามันได้เพิ่ม

strace -o sshtrace ssh localhost
write(4, "The authenticity of host 'localh"..., 200) = 200
read(4, "y", 1)                         = 1
read(4, "e", 1)                         = 1
read(4, "s", 1)                         = 1
read(4, "\n", 1)                        = 1
rt_sigaction(SIGALRM, {SIG_DFL, [], SA_RESTORER, 0x7fc73374d4a0}, NULL, 8) = 0
rt_sigaction(SIGHUP, {SIG_DFL, [], SA_RESTORER, 0x7fc73374d4a0}, NULL, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x7fc73374d4a0}, NULL, 8) = 0
rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0x7fc73374d4a0}, NULL, 8) = 0
rt_sigaction(SIGPIPE, {SIG_IGN, [], SA_RESTORER, 0x7fc73374d4a0}, NULL, 8) = 0
rt_sigaction(SIGTERM, {SIG_DFL, [], SA_RESTORER, 0x7fc73374d4a0}, NULL, 8) = 0
rt_sigaction(SIGTSTP, {SIG_DFL, [], SA_RESTORER, 0x7fc73374d4a0}, NULL, 8) = 0
rt_sigaction(SIGTTIN, {SIG_DFL, [], SA_RESTORER, 0x7fc73374d4a0}, NULL, 8) = 0
rt_sigaction(SIGTTOU, {SIG_DFL, [], SA_RESTORER, 0x7fc73374d4a0}, NULL, 8) = 0
close(4)                                = 0
open("/dev/null", O_WRONLY|O_CREAT|O_APPEND, 0666) = 4
fstat(4, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7ffff63c12c8) = -1 ENOTTY (Inappropriate ioctl for device)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc734b64000
fstat(4, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
lseek(4, 0, SEEK_END)                   = 0
write(4, "|1|qcJVRUE6IlxxxxxBvjBgHiiov4/8=|"..., 222) = 222
close(4)                                = 0
munmap(0x7fc734b64000, 4096)            = 0
write(2, "Warning: Permanently added 'loca"..., 76) = 76`

1
คุณลองได้ไหม strace -o ssh me@10.0.X.X และโพสต์บรรทัดที่เกี่ยวข้องกับคุณ known_hosts ไฟล์?
Flup

1
ลองใช้ -vvv: ssh -vvv me@10.0.X.X. มันเป็นโหมด verbose เพิ่มเติม (ระดับ 3)
september

แม้ว่าฉันจะใช้ -vvv แต่ก็ไม่ได้ให้ข้อมูลเพิ่มเติมใด ๆ ระหว่างบรรทัด "คุณแน่ใจหรือไม่" และ "คำเตือน:"
flickerfly

@Flup ฉันเพิ่มส่วนของ strace ที่ฉันคาดว่าเกี่ยวข้องกับคำถาม
flickerfly

ในกรณีของฉันมันเป็นเพราะการอนุญาตเขียนถูกตั้งเป็น 0 ใน know_hosts ไฟล์
Kun

คำตอบ:


3

ไคลเอ็นต์ SSH คิดว่าพา ธ ของไฟล์ known_hosts ของคุณคือ /dev/null:

open("/dev/null", O_WRONLY|O_CREAT|O_APPEND, 0666) = 4
[...]
write(4, "|1|qcJVRUE6IlxxxxxBvjBgHiiov4/8=|"..., 222) = 222

ตรวจสอบ ~/.ssh/config และบางที /etc/ssh/ssh_config หรือเทียบเท่า; ดูเหมือนว่าหนึ่งหรืออื่น ๆ มีบางสิ่งบางอย่างปลอม


ใช่ปรากฎ / etc / ssh / ssh_config มี "UserKnownHostsFile / dev / null" อยู่ในนั้น ทำไมถึงเปลี่ยนไปฉันยังไม่รู้ อาจเป็นเมื่อฉันเล่นกับโมดูลหุ่นเชิด
flickerfly

ไม่เคยเห็นหุ่นกระบอกทำอะไรแบบนั้น ฟังดูน่าสงสัยกว่าสิ่งอื่นใด หากฉันไม่ต้องการให้บันทึกว่าฉันเชื่อมต่อที่ไหนมันจะเป็นวิธีหนึ่งในการทำเช่นนั้น และการเชื่อมต่อขาออกจะไม่ถูกบันทึก (เข้ามาแม้ว่า) คุณอาจดูบันทึกของคุณสำหรับความแปลกประหลาดที่เกี่ยวข้องกับ ssh, sudo (เพื่อแก้ไข ssh_config)
lornix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.