
Я пытался выдавать команды с помощью plink для получения информации с моего внешнего сервера. Обратите внимание, что эти команды plink запускаются из двоичного файла, который не ожидает ввода от пользователя. Есть ли флаг, который позволит мне переопределить это сообщение об ошибке и продолжить вывод программы?
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n)
Спасибо!
решение1
Попробуйте добавить в начало скрипта:
echo y | plink -ssh root@REMOTE_IP_HERE "exit"
Это перенаправит y
персонажа stdin
, когда plink
вы получитеСохранить ключ в кэше? (да/нет)prompt, позволяя всем дальнейшим plink
командам проходить без необходимости ввода данных пользователем. exit
Команда закроет сеанс SSH после его установки, позволяя plink
выполнять следующие команды.
Вот пример скрипта, который записывает время Unix внешнего сервера в локальный файл:
echo y | plink -ssh root@REMOTE_IP_HERE "exit"
plink -ssh root@REMOTE_IP_HERE "date -t" > remote_time.tmp
Ссылка на конвейеризацию:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-4.html
решение2
Принятый ответ - "приемлемо", но небезопасно. Лучшим способом было бы указать ключ хоста для plink, чтобы предотвратить любыеЧеловек посерединеатака.
plink -hostkey aa:bb:cc... root@REMOTE_IP_HERE [...]
решение3
PuTTY
и plink.exe
совместно используют один и тот же кэш «приемлемых ключей сервера» на хосте, на котором они установлены.
Итак, если ваш сценарийинтерактивный(и отсюда ваше разочарование из-за того, что вас не слышат, когда вы нажимаете «y» или «n»), обходной путь — сначала попытаться подключиться с помощью PuTTY.
При этом:
- Вы откроете
PuTTY
и сделаете вид, что начинаете интерактивный сеанс SSH с сервером. - Появится диалоговое окно Windows с ключом и вопросом, хотите ли вы доверять ему.
- Вы проверите представленный ключ, чтобы защититься от MITM, затем нажмите
OK
- Впредь
plink.exe
не будем спрашивать, доверяете ли вы серверу или нет — он и так знает, что доверяете.