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

11

Мне нужно автоматизировать некоторые идентификационные развертывания, в идеале используя 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человека;

2grit
источник

Ответы:

15

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

sshpass -p "$TMP_PASS" ssh-copy-id
dhag
источник
LOL, не на Mac, и когда brew installя пытаюсь это сделать, я получаю сообщение «Ошибка: нет доступной формулы с именем« sshpass ». Мы не будем добавлять sshpass, потому что это делает слишком легким для начинающих пользователей SSH разрушать безопасность SSH».
tofutim
Инструкции по установке его с помощью homebrew на osx можно найти здесь gist.github.com/arunoda/7790979#install-with-homebrew Вам просто нужно запуститьbrew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
ewatt
2

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

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

Jakuje
источник
Блин ты прав! Я только что понял, что -Sфлаг от sudo: S
2grit
Если я хочу установить свои ключи на 100 хостах, используя ssh-copy-id и имея то, что все хосты уже имеют имя пользователя и пароль по умолчанию, как избежать того, чтобы ssh-copy-id запрашивал у меня каждый раз один и тот же пароль?
Realtebo
Это уже дано в обоих ответах - используйте sshpass, если вам нужно, или ожидайте сценарий.
Jakuje