วิธีเพิ่มชื่อโฮสต์ให้กับ known_hosts เพื่อใช้ทั่วทั้งระบบ


2

เท่าที่ฉันรู้ตัวเลือก ssh เริ่มต้น StrictHostKeyChecking ถูกตั้งค่าเป็น ask ดังนั้นการเชื่อมต่อ ssh แรกดูเหมือนว่า:

$ ssh host.example.com
The authenticity of host 'host.example.com (1.2.3.4)' can't be established.
RSA key fingerprint is 52:9b:0a:f1:e4:51:1b:96:8c:b7:96:7c:d3:d2:7d:9f.
Are you sure you want to continue connecting (yes/no)?
  • ฉันต้องการเพิ่มโฮสต์คีย์โดยอัตโนมัติเป็นครั้งแรกสมมติว่า ปัญหาด้านความปลอดภัยที่เป็นไปได้
  • ฉันต้องการให้ใช้รหัสโฮสต์โดยผู้ใช้ในพื้นที่โดยอัตโนมัติ (เช่นไม่มีอะไรพิเศษ ssh ตัวเลือกบรรทัดคำสั่ง)

คำตอบ:


0

ฉันอ่านแล้ว man ssh และ man ssh_config และหาวิธีแก้ปัญหานี้:

#!/bin/bash

SSH_KNOWN_HOSTS=/etc/ssh/ssh_known_hosts
[ -e $SSH_KNOWN_HOSTS ] || touch $SSH_KNOWN_HOSTS
for host in \
    host1.example.com \
    host2.example.com \
; do
    ssh-keygen -R $host -f $SSH_KNOWN_HOSTS
    ssh -q -o StrictHostKeyChecking=no -o BatchMode=yes -o UserKnownHostsFile=$SSH_KNOWN_HOSTS $host echo '' || true
done
chmod a+r $SSH_KNOWN_HOSTS

มันใช้งานได้ แต่ดูเหมือนว่าแฮ็ค คุณรู้วิธีที่สั้นกว่านี้หรือไม่?


0

ฉันคิดว่า keyscan สะอาดกว่า:

/usr/bin/ssh-keyscan $host >> $SSH_KNOWN_HOSTS

หากคุณต้องการลบรายการเก่าก่อน:

/usr/bin/ssh-keygen -R $host -f $SSH_KNOWN_HOSTS

จากนั้นคุณไม่จำเป็นต้องทนทุกข์กับคำเตือนอีกเลย

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