Ssh

從伺服器上傳和下載文件而不提供密碼

  • December 17, 2014

我想通過使用 cron 作業從伺服器下載文件,所以我需要使用scp 命令而不用關鍵字提供密碼。

我該怎麼做?

第一步是在您複製的機器上生成一個私鑰-公鑰對:

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 密鑰對)更有效。

引用自:https://unix.stackexchange.com/questions/174617