Я пытаюсь написать сценарий, который развернет сборку, созданную на моем настольном компьютере (windows / cygwin), на машине в моей тестовой среде (linux).
Я хотел бы использовать scp для копирования сборки на целевую машину. Единственная учетная запись на целевой машине - это root, и я не могу создать специального пользователя для этой задачи. Пользователь root не может войти в систему с помощью ключа ssh (я подозреваю, что это настроено на сервере ssh, но я не знаю, какие параметры конфигурации контролируют это). В любом случае я не могу изменить конфигурацию ssh-сервера.
Моя настольная машина использует Cygwin, и у меня установлен ssh. Что мне нужно, так это command-line-fu, которая позволит мне ввести пароль в командную строку.
Я осознаю опасность наличия пароля в виде открытого текста в сценарии оболочки, но здесь это не проблема.
Я рекомендую использовать для этой цели ssh-ключ. Если вы можете войти в систему как root, вы также можете изменить конфигурацию ssh-сервера.
В качестве следующего варианта вы можете установить SSH_ASKPASS
переменная окружения, указывающая на сценарий, который вы пишете, этот сценарий просто должен вывести пароль на стандартный вывод.
Есть несколько предпосылок для SSH_ASKPASS
работать:
ssh
команда не должна иметь доступа к tty.ssh
команда должна думать, что у нее есть доступ к X-серверу. Достаточно установить необходимые переменные среды, даже если X-сервер, на который они указывают, не существует.Одной из проблем, с которой я столкнулся при попытке сделать это со встроенной системой, был ssh-сервер, который не поддерживал аутентификацию по паролю. Вместо этого он использовал интерактивную клавиатуру, но настроен таким образом, чтобы он выглядел как аутентификация по паролю.
В крайнем случае, если ничего из вышеперечисленного не работает, вам нужно обернуть ssh
в скрипте, который подделывает tty и передает пароль через него. я использовал expect
чтобы добиться этого.
ИМО, лучше всего использовать какой-то сценарий ожидания. Мои обычные уловки по вводу пароля при выполнении такой команды не работают в моей установке Cygwin.