編寫shell腳本過程中履恩,涉及向遠程服務(wù)器傳輸文件,大家都會用到scp呢蔫;此篇文章分享scp的日常使用切心,以及在使用過程中遇到的問題。
1、scp日常使用
格式:
scp [option] [源路徑] [目標(biāo)路徑]
option:
-1??強制scp命令使用協(xié)議ssh1??
-2??強制scp命令使用協(xié)議ssh2??
-4??強制scp命令只使用IPv4尋址??
-6??強制scp命令只使用IPv6尋址??
-B??使用批處理模式(傳輸過程中不詢問傳輸口令或短語)??
-C??允許壓縮绽昏。(將-C標(biāo)志傳遞給ssh扬霜,從而打開壓縮功能)??
-p?保留原文件的修改時間,訪問時間和訪問權(quán)限而涉。??
-q??不顯示傳輸進度條著瓶。??
-r??遞歸復(fù)制整個目錄。??
-v?詳細方式顯示輸出啼县。scp和ssh(1)會顯示出整個過程的調(diào)試信息材原。這些信息用于調(diào)試連接,驗證和配置問題季眷。???
-c?cipher??以cipher將數(shù)據(jù)傳輸進行加密余蟹,這個選項將直接傳遞給ssh。???
-F?ssh_config??指定一個替代的ssh配置文件子刮,此參數(shù)直接傳遞給ssh威酒。??
-i?identity_file??從指定文件中讀取傳輸時使用的密鑰文件,此參數(shù)直接傳遞給ssh挺峡。????
-l?limit??限定用戶所能使用的帶寬葵孤,以Kbit/s為單位。?????
-o?ssh_option??如果習(xí)慣于使用ssh_config(5)中的參數(shù)傳遞方式橱赠,???
-P?port??注意是大寫的P,?port是指定數(shù)據(jù)傳輸用到的端口號???
-S?program??指定加密傳輸時所使用的程序尤仍。此程序必須能夠理解ssh(1)的選項。
1.1發(fā)送文件到遠程服務(wù)器
scp ?local_file login@server_ip:server_file
例如:上傳profile文件到192.168.1.1服務(wù)器的xiaobai用戶的根目錄下
scp /home/xiaobai/profile ?xiaobai@192.168.1.1:/home/xiaobai
1.2發(fā)送整個目錄到遠程服務(wù)器
scp -r local_dir login@server_ip:server_dir
例如:上傳mytest目錄到192.168.1.1服務(wù)的/home/xiaobai/QQ目錄下
scp ?/home/xiaobai/mytest ?xiaobai@192.168.1.1:/home/xiaobai/QQ/
1.3從遠程服務(wù)器上拷貝文件到本地
scp login@server_ip:server_file ?local_file
例如:將服務(wù)器192.168.1.1的/home/xiaobai/QQ/mytestfile文件拷貝到本地
scp xiaobai@192.168.1.1:/home/xiaobai/QQ/mytestfile ?/home/xiaobai/
1.4從遠程服務(wù)器上拷貝目錄到本地
scp -r login@server_ip:server_dir ?local_dir
例如:將192.168.1.1服務(wù)的/home/xiaobai/QQ目錄下載到本地
scp ?xiaobai@192.168.1.1:/home/xiaobai/QQ ?/home/xiaobai/mytest
注意:不論上傳或者下載狭姨,當(dāng)前使用用戶必須有指定的服務(wù)器目錄宰啦、文件的權(quán)限,否則會報無權(quán)限
2饼拍、scp免密操作
相信大家在執(zhí)行scp過程中赡模,交互頁面提示輸入密碼,如果在shell腳本中多處使用scp那就要多次輸入密碼师抄;遇到這個問題漓柑,我也是很心累,然后找到了一些解決方案司澎,挑出一種簡單直接暴力的方式欺缘,推薦給大家栋豫。挤安。。
2.1服務(wù)器(本機)從目標(biāo)服務(wù)器上傳/下載文件或者文件夾
2.2生成秘鑰
? ? ?本機執(zhí)行:ssh-keygen -t rsa
? ? ?遇到提示丧鸯,直接回車就OK蛤铜,秘鑰生成在用戶的根目錄的.ssh目錄下。比如小白用戶的/home/xiaobai/.ssh目錄下
2.3 復(fù)制/home/xiaobai/.ssh/id_rsa.pub文件到目標(biāo)服務(wù)器的/home/login_user/.ssh目錄下,并重命名為authorized_keys
? ? 本機執(zhí)行:scp /home/xiaobai/.ssh/id_rsa.pub ?login_user@ip:/home/login_user/.ssh/authorized_keys
這樣就完成使用scp命令围肥,不輸入密碼剿干,自動傳輸文件了
注意:如果目標(biāo)服務(wù)器上存在authorized_keys文件,請將id_rsa.pub文件內(nèi)容追加到authorized_keys
參考文獻:https://www.cnblogs.com/zhaoxinshanwei/p/5943814.html