我在远程 sftp 上有一组文件,我每天都需要将其下载到服务器。 sftp 使用 ssh 密钥进行身份验证,因此我创建了一个 ssh 密钥并添加到远程服务器授权文件夹中。我能够手动成功地进行 ssh/sftp。我创建了一个脚本,首先执行 eval ssh-agent -s
,然后执行ssh-add
.手动运行时,我们会收到输入密码的提示,并且 scp 工作正常。
eval `ssh-agent -s`;
ssh-add;
#copy from remote to local
我需要有关如何在添加此 crontab 每天运行时避免键入密码的建议/最佳实践。
答案1
我需要有关如何在添加此 crontab 每天运行时避免键入密码的建议/最佳实践。
创建一个ssh
带有空密码的新密钥,专门用于此任务。将其保存在一个文件中,例如,~/.ssh/cron
.将其相应的公钥添加到~/.ssh/authorized_keys
远程计算机上。当您运行scp
from 时,cron(8)
请使用新密钥执行此操作:
scp -i ~/.ssh/cron ...
这就是全部内容,您不需要ssh-add
。
评估 `ssh-agent -s`
与普遍的看法相反,这是坏的实践。 ssh-agent
当你退出终端时,它不会被杀死,它会永远伴随着你,无用但完全经过身份验证,从此幸福快乐。您将无法连接到它,但它始终会在那里供一些漂亮的木马发现和使用。随着时间的推移,您还将积累许多副本。
这样做:
ssh-agent /bin/bash -l
这会生成一个 shell,并在您退出该 shell 时退出。不要尝试编写它的脚本,仅将其用于交互的会话,并在完成后立即终止它。