Linux下的SCP無密碼拷貝文件

在Linux服務器之間自動拷貝文件的方法。主要使用了基于ssh的并且安全的文件copy技術(shù)——scp。這種方法安全并且便捷,無需輸入登錄密碼

我們先設定一下場景和需求:每天凌晨4點30分,服務器A的文件自動同步到服務器B。我們可以認為服務器A是服務端,服務器B是客戶端。下面演示如何達到這個目標。

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

②進入秘鑰文件夾查看文件。其中id_rsa.pub是公鑰,id_rsa是私鑰;

進入文件夾 ? ? ? ? ? cd ~/.ssh

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

ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip_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 root@x.xx.xxx.xxxx:/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)編寫定時任務腳本,執(zhí)行文件拷貝的命令。

1 //編輯定時任務

2 crontab -e

3 ?//添加定時任務

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

至此,完成!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容