我的 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
,脚本开始按预期工作。感谢您的帮助。