Назад | Перейти на главную страницу

В командной строке ssh укажите отпечаток ключа хоста сервера

С помощью ssh командная строка (OpenSSH), могу ли я указать отпечаток ключа хоста сервера?

Это возможно с winscp.com, используя (например) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

Я прочитал эту страницу руководства пару раз, прошу прощения, если я упустил очевидное.

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

В 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