Если Вы хотите использовать sftp из сценария, необходимо установить ключи SSH без пароля с ssh-keygen (1) или использовать sshpass
Мой голос почти всегда был бы для первого, но он может зависеть от ситуации, которая является большим количеством appropiate.
Вам не нужна связка ключей.
используйте ssh-keygen, сделайте новую пару ключей. deply открытый ключ на целевом сервере и префиксе это с командой как это
command="/bin/ls" ssh-dss YOURKEEEEEEEYHERE ==comment
в .ssh/authorized_keys на том удаленном хосте
когда это будет установкой, Вы сможете работать точно что команда на удаленном хосте через ssh, использующий пароль.
1) Создайте ssh пару ключей "ssh-keygen-f/some/path/mykey" и не давайте ей пароль
2) Копия это в authorized_keys файл удаленного пользователя "ssh-copy-id-i/some/path/mykey remoteuser@remotehost"
3) Создайте эхо "задания крона '8 * * * * ssh-i/some/path/mykey remoteuser@remotehost/path/to/some/command' | crontab -"
4) Идеально отредактируйте ~remoteuser/.ssh/authorized_keys, таким образом, ключ снабжается префиксом команду = "/path/to/some/command"
Если на самом деле то, что Вы хотите сделать, входят в систему удаленного хоста как один пользователь (например, remoteuser1) и затем используют sudo выполнение команда как другой пользователь (например, remoteuser2). Необходимо будет установить sudo на удаленном хосте, чтобы позволить первому пользователю, который выполнит команду как второго пользователя, не предоставляя пароль, somehthing как этот ins/etc/sudoers -
remoteuser1 ВСЕ = (remoteuser2) NOPASSWD:/path/to/some/command
Затем имейте задание крона на локальном хосте "ssh-i/some/path/mykey remoteuser@remotehost sudo/path/to/some/command"