Как перезаписать существующий файл ключа SSH с помощью ssh-keygen и PowerShell без ввода y

Если я хочу перезаписать существующий файл ключа SSH без ввода y, я бы сделал это в bash:

echo "y" | ssh-keygen -f /home/wakatana/id_rsa -N ""

Как этого же можно добиться с помощью PowerShell? Я пробовал следующее:

Write-Host "y" | ssh-keygen.exe -f C:\Users\wakatana\Desktop\id_rsa -N """"

Он не покажет мне диалог Overwrite (y/n)?, но я не переписываю существующий ключ. В чем проблема?


person Wakan Tanka    schedule 30.12.2019    source источник


Ответы (2)


Попробуйте Write-Output вместо Write-Host:

Write-Output "y" | ssh-keygen.exe -f .\test -N "blahblah"

введите здесь описание изображения

person Glenn    schedule 30.12.2019
comment
Write-Output здесь лишнее. - person Bill_Stewart; 30.12.2019
comment
Хорошее замечание от @Bill_Stewart. Это тоже должно работать: "y" | ssh-keygen.exe -f .\test -N "blahblah" - person Glenn; 30.12.2019
comment
большое спасибо. Это сработало. Не могли бы вы объяснить, почему Write-Host не работает, а Write-Output работает? - person Wakan Tanka; 03.01.2020
comment
@WakanTanka здесь - хорошее объяснение. По моим собственным словам, Write-Host отправляет вывод на хост, который может варьироваться, но обычно это командная консоль. Write-Output отправляет вывод через конвейер и в STDOUT, который затем интерпретируется как STDIN для следующей собственной команды в конвейере. - person Glenn; 03.01.2020

Просто удалите файл, если он уже существует, перед вызовом ssh-keygen.

Отправлять приложению "да" вслепую, не зная, что оно спрашивает в первую очередь, довольно опасно.

person Martin Prikryl    schedule 30.12.2019