ssh command line menentukan sidik jari kunci host server

15

Menggunakan sshbaris perintah (OpenSSH), dapatkah saya menentukan sidik jari kunci host server?

Ini dimungkinkan dengan winscp.com menggunakan (misalnya) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

Saya telah membaca halaman manual beberapa kali, saya minta maaf jika saya melewatkan yang jelas di sana.

Saya tidak ingin hanya menerima kunci host secara otomatis, dan saya tidak ingin mengharuskan pengguna untuk memperbarui known_hosts, tetapi menentukan kunci host dalam beberapa bentuk pada baris perintah.

payo
sumber
-o UserKnownHostsFile mungkin berfungsi dengan file temp.
payo

Jawaban:

16

Tidak ada opsi baris perintah di OpenSSH untuk meneruskan sidik jari kunci host.

Meskipun Anda dapat menggunakan file sementara (dengan format yang sama dengan known_hosts) dan sshmenggunakan yang menggunakan -o UserKnownHostsFile:

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

Lihat halaman manual ssh(untuk -o) dan ssh_config(untuk UserKnownHostsFile).


Anda juga dapat mempertimbangkan untuk menggunakan StrictHostKeyChecking yes.


Seperti yang disarankan pada Otomatis menerima sidik jari kunci rsa dari baris perintah , Anda dapat menulis skrip kecil yang memungkinkan Anda untuk mencapai itu:

#!/bin/bash

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

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

rm $TEMPFILE

Jika Anda memanggil skrip ssh_known_host, Anda dapat menggunakannya, melewati kunci sebagai argumen pertama:

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==' [email protected]
Martin Prikryl
sumber
Ada petunjuk mengapa -o UserKnownHostsFile=<(echo "hostname ssh-rsa ...")tidak berhasil?
kasperd
2
@kasperd Mungkin karena fd yang dibuat oleh <()dapat dibaca hanya sekali, sementara sshmembaca file berulang kali.
Martin Prikryl
terima kasih atas jawaban dan saran Anda menggunakan StrictHostKeyChecking. Solusi ini akan bekerja untuk saya.
payo
1
Saya lupa menyebutkan di edit bahwa solusi skrip menghindari serangan man-in-the-middle
RDP