rsync через ssh: можно ли ввести пароль ssh в командной строке?

Я вижу, что вы можете создать ключ SSH для использования rsync по ssh без запроса пароля.

но я использую rsync через ssh в Eclipse / ANT, где пароль может быть введен в интерактивном режиме, но тогда взаимодействие между eclipse и командой rsync не является интерактивным (это один вызов exec из командной строки), поэтому мне нужно будет указать пароль, полученный в eclipse в командной строке.

это возможно?

25
задан davidparks21
11.04.2023 21:36 Количество просмотров материала 2837
Распечатать страницу

3 ответа

после жаркой битвы между мной и компьютером, у меня наконец есть ответ, который не обсуждался ни в одной статье, которую я мог найти. Я напишу об этом в блоге.

решение: использовать новую функцию лишь в альфа-версии 1.8.3 муравья, который, кажется, просто исправить баг на версии 1.8.2, так что, вероятно, достаточно устойчиво даже с Альфа-титул. Эта функция позволяет передавать данные в стандартный поток ввода скрипта, а именно пароль. вы можете затем используйте стандартные инструменты linux или cygwin на windows до read пароль от STDIN и использовать его в качестве переменной.

никаких зависимостей, нет ключевых файлов, нет утечки пароля в командной строке, нет сохраненных паролей. Я наконец-то вижу свет за пределами этого мрачного существования, которое я пережил за последние несколько дней.

вот муравей задача, которая делает именно это:

<input message="Enter username for ${website.host}:" addproperty="host.username" />
<input message="Enter password for ${website.host}:" addproperty="host.password" />

<sshexec host="${website.host}" trust="true"
         username="${host.username}" password="${host.password}"
         inputstring="${host.password}"
         command='read var; expect -c "spawn sudo chmod u+x /usr/local/website/bin/start_website" -c "expect ${host.username}:" -c "send ${var}\r" -c "wait"' />

Примечание командной строки:

read var; expect -c "spawn sudo chmod u+x /usr/local/website/bin/start_website" -c "expect ${host.username}:" -c "send ${var}\r" -c "wait"

Сначала мы read STDIN в переменную var. Затем мы запускаем expect, который выполняет некоторые действия, требующие взаимодействия с пользователем:sudo в этом случае. Когда sudo запрашивает пароль, который мы отправляем из хранимой переменной var и wait для завершения процесса.

3
отвечен davidparks21 2023-04-13 05:24

Так как две машины будут вам известны, вы можете спокойно игнорировать пароль от отдельного пользователя, а затем:

  1. дайте пользователю rsync права sudo на rsync, чтобы они могли получить доступ ко всему

  2. настройка закрытого ключа / беспарольный войдите, используя этого пользователя rsync из удаленный компьютер и вызов rsync с sudo через ssh

таким образом, пароль не будет иметь значения, и вы будете более безопасным.

0
отвечен White Label Online Backup 2023-04-13 07:41

вы можете просто использовать ssh-agent и keychain.

0
отвечен hornetbzz 2023-04-13 09:58

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх