บรรทัดคำสั่ง ssh ระบุลายนิ้วมือคีย์โฮสต์เซิร์ฟเวอร์


15

ใช้sshบรรทัดคำสั่ง (OpenSSH) ฉันสามารถระบุลายนิ้วมือของคีย์โฮสต์ของเซิร์ฟเวอร์ได้หรือไม่

สิ่งนี้เป็นไปได้เมื่อใช้ winscp.com โดยใช้ (เช่น) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

ฉันได้อ่านหน้าคนสองสามครั้งฉันขอโทษถ้าฉันพลาดที่นั่น

ฉันไม่ต้องการเพียงยอมรับรหัสโฮสต์โดยอัตโนมัติและฉันไม่ต้องการให้ผู้ใช้อัปเดตknown_hostsแต่ระบุรหัสโฮสต์ในบางรูปแบบในบรรทัดคำสั่ง


-o UserKnownHostsFile อาจทำงานกับไฟล์ temp
payo

คำตอบ:


16

ไม่มีตัวเลือกบรรทัดคำสั่งใน OpenSSH เพื่อส่งผ่านลายนิ้วมือกุญแจโฮสต์

แม้ว่าคุณจะสามารถใช้ไฟล์ชั่วคราว (ในรูปแบบเดียวกับknown_hosts) และsshใช้ประโยชน์จากการใช้-o UserKnownHostsFile:

ssh -o "UserKnownHostsFile my_temp_known_host" host.example.com

ดูหน้าคนssh(สำหรับ-o) และหน้าssh_config(สำหรับUserKnownHostsFile)


StrictHostKeyChecking yesนอกจากนี้คุณยังอาจพิจารณาใช้


ตามที่แนะนำในAuto ยอมรับ rsa key ด้วยลายนิ้วมือจากบรรทัดคำสั่งคุณสามารถเขียนสคริปต์ขนาดเล็กที่จะช่วยให้คุณบรรลุเป้าหมายดังกล่าว:

#!/bin/bash

TEMPFILE=$(mktemp)
echo "$1" > $TEMPFILE

ssh -o "UserKnownHostsFile $TEMPFILE" ${@:2}

rm $TEMPFILE

ถ้าคุณเรียกใช้สคริปต์ssh_known_hostคุณสามารถใช้มันผ่านคีย์เป็นอาร์กิวเมนต์แรก:

ssh_known_host 'github.com ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw==' git@github.com

เบาะแสใด ๆ ที่ทำไม-o UserKnownHostsFile=<(echo "hostname ssh-rsa ...")ไม่ทำงาน?
kasperd

2
@kasperd อาจเป็นเพราะ fd ที่สร้างโดย<()สามารถอ่านได้เพียงครั้งเดียวในขณะที่sshอ่านไฟล์ซ้ำ ๆ
Martin Prikryl

ขอบคุณสำหรับคำตอบและคำแนะนำของคุณโดยใช้ StrictHostKeyChecking วิธีนี้ใช้ได้ผลสำหรับฉัน
payo

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