Как да презапишете съществуващ 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