Ниже приведен скрипт, который я пытаюсь запустить, который работает без каких-либо проблем
for i in `seq 200 2100`
do
usr=(`ssh -t -t -o ConnectTimeout=60 machine$1 finger | tail -1 | awk '{print$1}'`)
echo $usr
done
Но как только я добавляю его в crontab, он не дает мне пользователя.
22 12 * * * sh /home/subrahmanyam/Scripts/who.sh
Пожалуйста, дайте свои мысли .....
может быть, cron demon работает, поэтому нам нужно включить несколько бинарных файлов ...?
shell
ssh
cron
authentication
Жиль "ТАК - прекрати быть злым"
источник
источник
Ответы:
Вы можете создавать ssh-соединения в cron-сессии. Вам нужно настроить аутентификацию с открытым ключом, чтобы иметь доступ без пароля. Чтобы это работало, вы должны иметь
PubkeyAuthentication yes
на каждом удаленном сервереsshd_config
.Вы можете создать пару секретный / открытый ключ с парольной фразой или без нее. Если вы используете фразу-пароль (рекомендуется), вам также нужно запустить ssh-agent. Без ключевой фразы вам нужно всего лишь добавить параметр
-i your_identity_file
вssh
командную строку.ssh
будет использовать$HOME/.ssh/id_rsa
по умолчанию.Я повторил ваш пример, используя пару ключей с парольной фразой. Вот как я это сделал.
1) Создана пара ключей с парольной фразой. Сохраненный закрытый ключ как
~/.ssh/id_rsa_test
, который должен иметь правильные разрешения по умолчанию. Мы можем ввести пустую фразу-пароль, чтобы не использовать ее.2) Отправил открытый ключ на серверы, проделал тоже самое для всех. Помните, что они должны быть
PubkeyAuthentication
включены.3) Запустите ssh-agent как сервис с
-s
. Это не убьет его, если вы выйдете из системы. Его выводом является действительный сценарий оболочки, устанавливающий среду, чтобы клиент ssh знал, как к нему подключиться. Мы сохраняем это в файл (действительно нужна только первая строка).4) Загрузил вышеупомянутое в нашу текущую среду, чтобы мы могли использовать
ssh-add
наш закрытый ключssh-agent
. пароль сверху.5) Проверено добавлено.
6) Сценарий, который я использовал, немного изменен, чем ваш. Обратите внимание, что я не заключил команду ssh в круглые скобки и не использовал обратные галочки
$()
, что является лучшей альтернативой для подстановки команд (этоbash
совместимо, вы не упомянули, какую оболочку вы используете). Я использовал ту же самую команду ssh, что и ваша.7) Мой crontab (обратите внимание, что мой
sh
на самом делеbash
)8) Выход
Единственная проблема с использованием ключевой фразы заключается в том, что вам нужно вводить ее вручную как минимум один раз. Таким образом, выше не будет автоматически работать после перезагрузки.
источник
Кто вводит пароль? Задание cron не может попасть в ваш ssh-agent, поэтому открытый ключ не будет работать.
Вам необходимо
ssh
явно указать файл ключа (см.-i
Опцию), поскольку он не может запросить агента; и этот ключ должен иметь пустую фразу-пароль.источник
/dev/tty
вместо пароля парольstdin
; это не сработает от cron.known_hosts
? Но да, вам нужно следить за разрешениями - файл закрытого ключа должен быть в режиме 0600 или даже 0400, принадлежащем вам. Если вам нужен какой-то другой пользователь, чтобы иметь возможность использовать его, вы должны изучить POSIX ACL или аналогичные.kinit
работы cron. Тем не менее, keytabs также требуют такой же заботы в разрешениях; но,ssh
по крайней мере, не буду жаловаться на них.Вместо того, чтобы хранить временный файл, как сделал forcefsck, я предпочитаю использовать его
find
для поиска на активном агенте.В теме сценария, который нуждается
ssh-agent
, я использую:Он ищет
ssh-agent
сокет и возвращает первый. Он ограничен только текущим пользователем, поэтому вы не сможете случайно попытаться использовать других пользователей и получить ошибку «Отказано в доступе». Вы также должны быть уже зарегистрированы с активнымssh-agent
. (Ubuntu запускает агент при запуске графического интерфейса).Если вы поместите это в другой скрипт, вам нужно будет вызвать его с помощью
source
или.
потому, что ему нужно установитьSSH_AUTH_SOCK
переменную.источник
Используйте ssh-cron для установки запланированных SSH-подключений к защищенным серверам без предоставления ключей SSH, но с использованием агента SSH.
источник
Вы можете запустить свой скрипт или команду в crontab, например:
или же
источник