天天看點

linux scp ssh拷貝檔案,Linux下的SCP無密碼拷貝檔案

加入全棧技術交流群(QQ群号:254842154)

今天給大家介紹一種在Linux伺服器之間自動拷貝檔案的方法。主要使用了基于ssh的并且安全的檔案copy技術——scp。這種方法安全并且便捷,無需輸入登入密碼。

我們先設定一下場景和需求:每天淩晨4點30分,伺服器A的檔案自動同步到伺服器B。我們可以認為伺服器A是服務端,伺服器B是用戶端。下面示範如何達到這個目标。

①在用戶端(伺服器B)生成一對公鑰和秘鑰。使用 ssh-keygen -t rsa生成,一路回車即可;

linux scp ssh拷貝檔案,Linux下的SCP無密碼拷貝檔案

②進入秘鑰檔案夾檢視檔案。其中id_rsa.pub是公鑰,id_rsa是私鑰;

//進入檔案夾

cd ~/.ssh

③打開id_rsa.pub檔案,并把它的内容拷貝到服務端(伺服器A)的authorizedkeys檔案中;或者直接使用ssh-copy-id指令把idrsa.pub拷貝到伺服器A中。如下指令,按提示輸入登入密碼即可拷貝。注意,假如伺服器隻能用SSH秘鑰檔案登入,則ssh-copy-id指令無法使用,隻能編輯authorized_keys檔案。

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]_address

④在用戶端(伺服器B)編寫檔案拷貝的腳本;

#!/bin/sh

#copy data from remote server. you should copy your client's id_rsa.pub content to the server's ~/.ssh/authorized_keys file

#this script run at client

scp -r [email protected]:/var/www/html/hellojammy/* /var/www/html/hellojammy/

exit 0;

其中,x.xx.xxx.xxxx是服務端(伺服器A)的ip位址。這段腳本的作用是拷貝伺服器B的/var/www/html/hellojammy/目錄下的所有檔案(包括子檔案夾下的檔案),到伺服器A的/var/www/html/hellojammy/目錄。腳本檔案為scp_test.sh

⑤在用戶端(伺服器B)編寫定時任務腳本,執行檔案拷貝的指令。

//編輯定時任務

crontab -e

//添加定時任務

30 4 * * * /bin/sh /data/script/scp_test.sh > /data/script/logs/scp_test.log 2>&1

至此,完成!