gpt4 book ai didi

linux - cron 作业中的 ssh 代理转发

转载 作者:太空狗 更新时间:2023-10-29 11:10:14 26 4
gpt4 key购买 nike

我想知道为什么 ssh 代理转发在 cron 作业中不起作用。我有一个简单的脚本,例如:

ssh -A remote_host "ls ~"

我可以在不输入任何密码的情况下运行这个脚本,但是在将它放入 cron 作业之后,它总是失败并显示:

Permission denied, please try again.

Received disconnect from ip_of_remote_host: 2: Too many authentication failures for myuser

谁能告诉我如何解决这个问题?

非常感谢!

最佳答案

启动 ssh-agent 时需要将 SSH_AGENT_PID 或 SSH_AUTH_SOCK 存储在 env 文件中,并在 ssh 脚本中获取它,

这是我使用的脚本,很久以前从网上抓取的。

SSH_ENV=$HOME/.ssh/environment
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV} > /dev/null
ssh-add id_rsa
}
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi

如果 key 受 passphase 保护,请手动运行它,它将存储在 $HOME/.ssh/environment 中,类似于

SSH_AUTH_SOCK=/tmp/ssh-KldGwK6643/agent.6643; export SSH_AUTH_SOCK;
SSH_AGENT_PID=6644; export SSH_AGENT_PID;

在你的 crontab 中. $HOME/.ssh/environment && ssh -A blabla

如果您的服务器重新启动,您需要再次手动运行 start_agent scrit

关于linux - cron 作业中的 ssh 代理转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12033249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com