Отправьте пароль через stdin в `ssh-copy-id`

Мне нужно автоматизировать некоторые развертывания идентификации, в идеале используя ssh-copy-id .

Я пытаюсь предоставить пароль через stdin, что возможно на ssh , используя флаг -S . Я знаю, что я могу отправить дополнительные параметры в ssh используя флаг -o в команде ssh-copy-id однако на этой странице нет примеров использования этого флага.

Поэтому я попытался передать SSH-пароль для ssh-copy-id через stdin, используя:

 $# echo $TMP_PASS | ssh-copy-id -p2222 -i key.pub user@host -o "-S" 

Но все, что я получаю, это:

 /bin/ssh-copy-id: ERROR: command-line: line 0: Bad configuration option: -s 

РЕДАКТИРОВАТЬ:

Я пытаюсь предоставить пароль через stdin, что возможно на ssh , используя флаг -S .

Это утверждение неверно. Я действительно прочитал этот флаг у sudo man;

  • Почему wget не работает через туннель ssh? Что делает прокси-сервер для предотвращения использования ssh-client?
  • ssh password-less login не работает с помощью proxycommand
  • SSH: «Сервер отказался от нашего ключа» без причины
  • Не удалось разрешить имя хоста
  • ssh to localhost не работает, удаленные ssh works
  • SSH на сервер, выполнять команды и отдавать управление пользователю
  • Принимая пароль из файла, когда SSH входит в машину
  • Автоматический перезапуск сеанса ssh после сна
  • 2 Solutions collect form web for “Отправьте пароль через stdin в `ssh-copy-id`”

    Возможно, вы захотите установить sshpass и изменить свой вызов на ssh-copy-id :

     sshpass -p "$TMP_PASS" ssh-copy-id 

    Где вы нашли информацию о опции -S ? Это нечто совершенно другое! Он используется для мультиплексирования и ControlPath.

    SSH не будет принимать пароли на stdin никогда , поэтому вы должны предварительно установить авторизованные ключи в своем развертывании (предпочтительный вариант) или использовать sshpass или expect как описано во многих других вопросах.

    Linux и Unix - лучшая ОС в мире.