5

Мы используем какое-то программное обеспечение, которое связывает SSH с кучей машин и что-то делает. Проблема в нашей тестовой лаборатории, виртуальные машины очень часто обновляются (уничтожаются и воссоздаются), поэтому программное обеспечение будет воспринимать виртуальную машину как новую, какой она есть, и потерпит неудачу, потому что подлинность хоста не может быть установленным. Мне сказали, чтобы вручную ввести PuTTY и принять ключ хоста, и после того, как программное обеспечение будет счастливым.

Делать это с несколькими сотнями виртуальных машин не весело.

Итак, я хочу знать, есть ли какой-нибудь командный инструмент, который я могу автоматизировать, чтобы принять ключ хоста для PuTTY? Мы находимся в закрытой лаборатории, поэтому я не слишком беспокоюсь о безопасности.

Я знаю, что есть некоторые решения для среды Linux, но это Windows.

4 ответа4

6

@Paul выше предложил использовать pscp. Он отлично работает, очень прост и полностью поддерживает скрипты:

 C:\> echo y | pscp.exe -l user -pw password -ls 192.168.0.1:/
5

На своем официальном сайте разработчики дали понять, что такая функция не будет доступна в PuTTY (выделено мной):

Возможность автоматически принимать все ключи хоста SSH. По некоторым причинам многие люди думают, что это будет действительно полезная функция. Я уверен, что это будет очень удобно, но за счет безопасности! Весь смысл ключей хоста в том, что они являются единственной гарантией того, что ваше соединение не было перехвачено активным злоумышленником между вами и сервером, и что ваши данные не расшифровываются злоумышленником и не перешифровываются. , Если вы хотите запланировать автоматическое пакетное задание на использование PSCP или Plink, а интерактивная подсказка ключа хоста затрудняет это, заранее добавьте правильный ключ хоста в реестр. (Обновление, 2014-09-09: или, если реестр недоступен, вы можете использовать новую опцию -hostkey, чтобы указать правильный ключ или отпечаток в командной строке.) Таким образом, вы все еще получаете удобство, но без потери безопасности. Мы не примем параметр командной строки, чтобы отключить проверку ключа хоста, независимо от того, сколько людей уже выполнили работу и отправили нам исправленные исправления производственного качества.

Если у вас есть ключи хоста, доступные в общем формате `known_hosts ', у нас есть скрипт для преобразования их в Windows.REG-файл, который можно установить заранее, дважды щелкнув.

Источник: http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/accept-host-keys.html

К сожалению, PuTTY не может достичь этого без взаимодействия с пользователем.

-1

Я знаю, что это старый пост, но это может быть способ использовать Powershell с pscp и сохранить немного безопасности. Это все еще незаконченный, не полностью протестированный сценарий, но, возможно, один из способов ...

$storeddevicehostkeypath = "C:\temp\_hostkeys\keyfile.tmp"
pscp -batch -v dummyusertogethostkey@192.168.0.1:validatekey dummy2validatekey  2>&1  | tee -Variable allOutput | out-null
$stderr = $allOutput | ?{ $_ -is [System.Management.Automation.ErrorRecord] }
$stdout = $allOutput | ?{ $_ -isnot [System.Management.Automation.ErrorRecord] }
$hostkey = ([regex]"(?>ssh-[a-zA-Z0-9]{1,9}) (?>[0-9]{3,4}) ((?>[0-9a-f]{2}:){15}[0-9a-f]{2})").match("$stderr").Groups[1].value


"Validate if hostkey changed or already known"
if (test-path $storeddevicehostkeypath) {
    if ($hostkey -eq (gc $storeddevicehostkeypath)) {"Hostkey has not changed since last login"} else {"NO ACCESS GRANTED because of security rule! Hostkey has changed!"; exit 2}
} else {
    "hostkey not stored unter $storeddevicehostkeypath - creating new file"
    $hostkey | out-file -FilePath "$storeddevicehostkeypath"
}


"Trying to connect with hostkey $hostkey"
pscp -batch -hostkey $hostkey -v admin@192.168.0.1:sys back  2>&1  | tee -Variable allOutput | out-null
$allOutput[-1].ToString()

Как уже упоминалось - не полностью проверено и незакончено

-1

Я столкнулся с той же проблемой при написании скрипта powershell для взаимодействия с Китти для резервного копирования всех наших конфигураций коммутатора. Я нашел сообщение на другом форуме от парня, который пытается взаимодействовать с программой калькулятора Microsoft. Моя программа в основном ждет, пока не откроется окно принятия ключа RSA, а затем отправляет ключ y. Вот пост, который я нашел: Обеспечить ввод в приложения с помощью PowerShell

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .