Ssh
從伺服器上傳和下載文件而不提供密碼
我想通過使用 cron 作業從伺服器下載文件,所以我需要使用
scp
命令而不用關鍵字提供密碼。我該怎麼做?
第一步是在您複製的機器上生成一個私鑰-公鑰對:
ssh-keygen
您可以使用預設設置,並確保您不提供使用密碼。這可能需要一些時間。
第二步,在密鑰生成完成後,使用以下命令將公鑰複製到伺服器:
ssh-copy-id username@server
與適當的
username
和server
。為此,您需要密碼username
。如果username
沒有密碼,您可以通過root帳戶複製帶有公鑰的文件,但是為該帳戶臨時創建密碼並使用要容易得多ssh-copy-id
第三步:測試安裝的公鑰是否正在使用:
ssh username@server
或scp 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 密鑰對)更有效。