Вот способ считать stdin и разделение на новых строках, сохраняя пробел в целости:
Я протестировал с тире
#!/bin/dash
while IFS= read -r line; do
set -- "$@" "$line"
done
printf "have arg '%s'\n" "$@"
Сначала вы можете проверить, работает SSH-Agent
и запустить его, если нет:
if ! [ -n "$SSH_AUTH_SOCK" ] ||
! { ssh-add -l &>/dev/null; rc=$?; [ "$rc" -eq 0 ] || [ "$rc" -eq 1 ];}; then
echo "Starting agent..."
eval "$(ssh-agent -s)"
fi
SSH-Add -L
выходит с кодом 1 Если нет идентичностей и с кодом 2, если он не может подключиться к SSH-агенту
.
Затем вы добавляете пароль для ключевого ключа.
ssh-add ~/path/to/keyfile
Идея SSH-Agent
состоит в том, чтобы запустить службу, хранящую все ваши клавиши. Поэтому вам нужно только ввести пароль один раз, и вы даже можете переслать свой агент на удаленный хост, если вы хотите войти на второй хост оттуда.
Сначала проверяйте, что SSH-Agent
работает с использованием SSH-Add -l
, который, вероятно, говорит: «У агента нет идентичности».
Вторых, вы добавляете клавиши к вашему Агент, говоря SSH-Add
или Путь / к / ключей / файл / файл
.
После этого rsync, как и любая другая команда, использующая SSH, будет просто использовать агент для получения ключа, необходимого для удаленного подключения.