ssh подключается нормально из командной строки, но из cron с использованием открытого ключа

Для rsync (инкрементальной) с удаленного сервера (Centos 6.x) на локальный клиент (Ubuntu 18.04) я скопировал открытый ключ, который я создал, с клиента на сервер, чтобы выполнить rsync без пароля.

PasswordAuthentication да в sshd_config

В локальном Ubuntu у меня есть несколько исполняемых скриптов, которые выглядят как

#!/bin/sh

RSYNC=/usr/local/bin/rsync-incr
SSH=/usr/bin/ssh\ -p\ xxxx
ROTATE=60
RUSER=yyyy
RHOST=zzzz
RPATH=/path-to-remote-dir/
LPATH=/path-to-local-dir/

$RSYNC -az --rsh="$SSH" $ROTATE $RUSER@$RHOST:$RPATH $LPATH

Я запускаю этот скрипт из командной строки / path-to-local-script-file

и он работает нормально, но если я добавлю эту строку в crontab -e

00 00   * * *   /path-to-local-script-file

, я получаю сообщение об ошибке cron «Permission denied, please try again» rsync: соединение неожиданно закрыто (на данный момент получено 0 байт)
[Receiver] Ошибка rsync: необъяснимая ошибка (код 255) на io.c (235) [Receiver = 3.1.2]
*** ОШИБКА: rsync вернул код 255

Очевидно, это проблема с разрешением. Я не понимаю, почему я могу выполнить / path-to-local-script-file из командной строки и успешно выполнить задачу rsync от имени пользователя myname и не могу сформировать cron (crontab -e выполняется от имени того же пользователя.

Редактировать 1: Я создал новый ключ без парольной фразы, удалил старую строку rsa-ssh с открытым ключом из authorized_keys на удаленном сервере.
Такое же поведение, нормально, запуск скрипта из командной строки, разрешение запрещено cron

Редактировать 2:
Журнал сервера, подключающийся к ssh из командной строки

23 мая 10:20:53 хост sshd [21067]: принят открытый ключ для root от xxx.xxx.6.13 порт 42836 ssh2

23 мая 10:20:53 хост sshd [21067]: pam_unix (sshd: session): сеанс открыт для пользователя root пользователем (uid = 0)

Журнал сервера, подключающий ssh ​​к cron

23 мая 10:17:03 host sshd [18163]: неверный пароль для root от xxx.xxx.6.13 порт 42514 ssh2

23 мая 10:17:03 хост sshd [18163]: неверный пароль для root от xxx.xxx.6.13 порт 42514 ssh2

23 мая 10:17:03 хост sshd [18164]: соединение закрыто xxx.xxx.6.13

0
задан 23 May 2018 в 21:38
1 ответ

Похоже, что вы запускаете скрипт вручную как пользователь без полномочий root, а cron запускает его как root.

В этом случае вам нужно будет определить путь к закрытый ключ ssh.

Если вы подключаетесь к удаленному серверу с правами root (плохо), то вам понадобится root authorized_keys, чтобы иметь открытый ключ рабочей станции

1
ответ дан 4 December 2019 в 15:57

Теги

Похожие вопросы