如何在 CoreOS 中以非 root 用户身份安排作业

如何在 CoreOS 中以非 root 用户身份安排作业

我的 CoreOS 机器上有一个如下所示的脚本,我用它从列表中 ssh 到多个节点并获取所需的详细信息

host_det=$(ssh -Ao StrictHostKeyChecking=no -o BatchMode=yes -o ConnectTimeout=5 -l $user $node "
hostname
docker ps | grep haproxy
sudo df -h |grep abcd ")

我正在使用配置为无密码的非 root 用户执行 ssh,如果我正常以同一用户身份执行它,它工作正常。 (./ssh.sh)

在我使用 systemd 计时器安排此脚本后,ssh 询问我密码,并且脚本失败。我知道当我们使用计时器时,它会以 root 用户身份执行,这就是为什么即使我明确指定了 ssh 用户,它也会询问密码。 CoreOS 有什么方法可以为非 root 用户安排计时器吗?

我的计时器和服务文件如下。

cat /etc/systemd/system/ssh.timer

[Unit]
Description=Run ssh.service every morning 8:30

[Timer]
OnCalendar=*-*-* 08:30:00
Persistent=true

[Install]
WantedBy=multi-user.target




cat /etc/systemd/system/ssh.service

[Unit]
Description=Run the ssh script

[Service]

Type=oneshot
ExecStart=/usr/bin/bash -c '/home/user_name/ssh.sh 2>/tmp/date'

答案1

你需要定义

User=user_name

在您的 .service 文件中,让它以不同的用户身份运行。

答案2

问题在于SSH_AUTH_SOCK调度程序环境与正常环境不同。导出工作后SSH_AUTH_SOCK,脚本开始按预期工作。感谢您的帮助。

相关内容