в командному рядку ssh вкажіть відбиток ключа сервера


15

Чи можна за допомогою sshкомандного рядка (OpenSSH) вказати відбиток ключа сервера?

Це можливо з wincp.com за допомогою (наприклад) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

Я кілька разів прочитав сторінку чоловіка, прошу вибачення, якщо я пропустив там очевидне.

Я не хочу просто приймати ключ хоста, і я не хочу вимагати від користувача оновлення їх known_hosts, а краще вказати ключ хосту в якійсь формі в командному рядку.


-o UserKknownHostsFile може працювати з тимчасовим файлом.
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.


Як запропоновано в автоматичному прийнятті відбитка ключа rsa з командного рядка , ви можете написати невеликий сценарій, який дозволить вам досягти цього:

#!/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як файл читає повторно.
Мартін Прикрил

дякую за вашу відповідь та поради за допомогою StrictHostKeyChecking. Це рішення буде працювати для мене.
payo

1
Я забув згадати під час редагування, що рішення сценарію дозволяє уникнути атаки "середнього"
RDP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.