无需提供密码即可从服务器上传和下载文件

无需提供密码即可从服务器上传和下载文件

我想使用 cron 作业从服务器下载文件,因此我需要使用该scp 命令而不通过关键字给出密码。

我该怎么做?

答案1

第一步是在您复制的计算机上生成私钥-公钥对:

ssh-keygen

您可以使用默认值,并确保不提供使用密码。这可能需要一些时间。

第二步,密钥生成完成后,使用以下命令将公钥复制到服务器:

ssh-copy-id username@server

与适当的usernameserver.为此,您需要 的密码username。如果username没有密码,您可以通过root帐户复制带有公钥的文件,但临时为该帐户创建密码并使用要容易得多ssh-copy-id

第三步:使用以下命令测试安装的公钥是否有效:ssh username@serverscp somefile username@server:/var/tmp

第四步:crontab -e在客户端机器上添加一个cron作业():

15 23 * * * scp username@server:/path/on/server/downloadfile /local/destination
17 23 * * * scp /local/source/somefile username@server:/path/on/server/uploaddirectory

/path/on/server/downloadfile它将每天晚上 11:15 从服务器复制文件,两分钟后开始上传/local/source/somefile

需要考虑的事项:

  • 根据对客户端计算机(您从中进行复制的位置)访问的安全性以及未受保护的私钥所在的位置,您应该考虑更改帐户,username以便它只允许scp而不允许ssh
  • 如果您复制相同的文件并且内容大部分发生变化(例如附加,而不是完全重写),则使用rsync上面的 ssh 密钥对)会更有效。

相关内容