C # WinSCP дает пользователю возможность принять или отклонить ключ RSA - PullRequest
2 голосов
/ 19 декабря 2011

Я использую WinSCP для передачи некоторых файлов в другую систему, но у меня возникают некоторые проблемы.Поскольку я собирался использовать эту программу на C # на разных устройствах, ключи не одинаковы, поэтому я хотел бы распечатать окно сообщения или что-то похожее на пользователя, предоставив ему возможность, которую вы обычно видите через WinSCP.com:

winscp> (U)pdate,(A)dd,Can(n)cel,(C)opy Key,(S)kip: Cancel

Прямо сейчас я показываю опции для пользователя с winscp.StandardOutput.ReadLine() и даю им выбор, какой возврат с winscp.StandardInput.WriteLine([user choice]), но это, похоже, не работает.Я продолжаю получать "Ключ хоста не был проверен!"Любые предложения о том, как подойти к этому?Спасибо.

Редактировать: Я считаю, что это как-то связано с WinSCP, не ожидая ввода.Я изменил параметр echo на «on», чтобы я мог видеть свой ответ и мой ответ происходит после того, как WinSCP уже отклонил соединение.

Мои параметры в WinSCP на данный момент: пакетный прерывание, подтверждение включено, эхо включено.

Так что теперь я предполагаю, что WinSCP в любом случае будет ждать моих команд из .exe?

1 Ответ

2 голосов
/ 20 декабря 2011

Пока у меня это работает через "псевдо" первое соединение. Я знаю, что это не очень красиво, и люди будут (и, вероятно, должны) кричать на меня за то, что я так поступаю. Сначала я предпринял попытку подключения к конечному устройству,

winscp.StandardInput.WriteLine(open scp://name:pass@xx.xx.xx.xx);

Но это только для того, чтобы получить ключ от конечного устройства, так как я могу просмотреть выходные данные из winscp и найти сообщение, которое показывает этот прекрасный ключ. Итак, теперь, зная RSA-ключ моего устройства, я могу затем подсказать пользователю: «Вы процессор, не знаете этого устройства ... Все равно подключаетесь?» [Да / нет / отмена]. Если они говорят «да», то я могу явно указать winscp нужный ключ хоста и подключиться,

winscp.StandardInput.WriteLine(open scp://name:pass@xx.xx.xx.xx -hostkey: *****);

Как я уже сказал, это не самая красивая, и я хотел бы сделать это с одной попыткой подключения. Но что будет сделано правильно? Я все еще смотрю на это для лучшего варианта.

...