Передайте ключевую фразу внешней команде SSH в Windows.Php

Кемеровские программисты php общаются здесь
Anonymous
Передайте ключевую фразу внешней команде SSH в Windows.

Сообщение Anonymous »

Я использую Symfony Process для запуска SSH-клиента, входящего в комплект Windows, в PHP-скрипте командной строки. Настройки удаленного сервера хранятся в файле C:\Users\MYUSERNAMEHERE\.ssh\config, соединение устанавливается с помощью закрытого ключа, и я запускаю команду вручную под своим личным пользователем.
Запрос на ввод пароля закрытого ключа обрабатывается нормально, если я не делаю каких-либо специальных действий: я ввожу его, когда предлагается, и все в порядке. Однако это накладывает несколько ограничений:
  • Я не могу ввести пароль, пока не будут завершены предыдущие шаги сценария.
    < li>Мне нужно вводить его каждый раз, когда я запускаю SSH в своем скрипте.
Я предпочитаю сам запрашивать пароль, а затем передавать его SSH как много раз по мере необходимости. Я пытался использовать для этого входные данные процесса, но ничего из того, что я пытался, не помогло. В зависимости от того, что я делаю, я получаю два результата:
  • Скрипт по-прежнему останавливается с сообщением «Введите кодовую фразу для ключа».
  • Процесс запускается и завершается сбоем, код выхода равен нулю, стандартный вывод процесса и стандартный поток stderr пусты, а терминал показывает «Введите кодовую фразу для ключа».
Это одна из итераций:

Код: Выделить всё

$input = new InputStream();
$process = new Process('ssh connectionnamehere ls -Al');
$process->setInput($input);
$process->start();
//$process->wait();
$input->write('MYSSHPASSWORDHERE'. "\r\n"); // Temporarily hard-coded until I figure this out
$input->close();
var_dump(
$process->isSuccessful(),
$process->getExitCode(),
$process->getExitCodeText(),
$process->getOutput(),
$process->getIncrementalOutput(),
$process->getErrorOutput(),
$process->getIncrementalErrorOutput()
);

Код: Выделить всё

bool(false)
NULL
NULL
string(0) ""
string(0) ""
string(0) ""
string(0) ""
Enter passphrase for key 'C:\Users\MYUSERNAMEHERE\.ssh\id_rsa-redacted':
Чего мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/787 ... on-windows

Вернуться в «Php»