環境說明
有兩台服務器,client端沒有root權限,接收端server有root權限。現在需要從client端免密scp文件到server端。
因為client端沒有.ssh文件夾的訪問權限,所以不能直接使用client端的密鑰,需要從server端生成密鑰文件。
整個流程操作步驟如下:
1、server端生成密鑰,並且把公鑰添加到authorized_keys
2、把私鑰上傳到client端
3、使用scp -i指定密鑰傳輸
server端配置
生成密鑰對
執行ssh-keygen -t rsa,完成之后在/root/.ssh文件夾可以查看到密鑰對id_rsa為密鑰文件,id_rsa.pub為公鑰文件;
執行cp -rf /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys即可
client端配置
上傳私鑰
把server端的id_rsa上傳至client端即可
使用scp傳輸
1.命令格式:
scp [參數] [原路徑] [目標路徑]
2.命令功能:
scp是 secure copy的縮寫, scp是linux系統下基於ssh登陸進行安全的遠程文件拷貝命令。linux的scp命令可以在linux服務器之間復制文件和目錄。
3.命令參數:
-1 強制scp命令使用協議ssh1
-2 強制scp命令使用協議ssh2
-4 強制scp命令只使用IPv4尋址
-6 強制scp命令只使用IPv6尋址
-B 使用批處理模式(傳輸過程中不詢問傳輸口令或短語)
-C 允許壓縮。(將-C標志傳遞給ssh,從而打開壓縮功能)
-p 保留原文件的修改時間,訪問時間和訪問權限。
-q 不顯示傳輸進度條。
-r 遞歸復制整個目錄。
-v 詳細方式顯示輸出。scp和ssh(1)會顯示出整個過程的調試信息。這些信息用於調試連接,驗證和配置問題。
-c cipher 以cipher將數據傳輸進行加密,這個選項將直接傳遞給ssh。
-F ssh_config 指定一個替代的ssh配置文件,此參數直接傳遞給ssh。
-i identity_file 從指定文件中讀取傳輸時使用的密鑰文件,此參數直接傳遞給ssh。
-l limit 限定用戶所能使用的帶寬,以Kbit/s為單位。
-o ssh_option 如果習慣於使用ssh_config(5)中的參數傳遞方式,
-P port 注意是大寫的P, port是指定數據傳輸用到的端口號
-S program 指定加密傳輸時所使用的程序。此程序必須能夠理解ssh(1)的選項。
此處用到的就是-i參數
使用前記得把id_rsa權限改成600,權限太大會報錯
scp -i id_rsa auto_feature/featurefile/特征庫* root@172.16.16.199:/HYTF/TD/特征庫文件/第二代特征庫/
備注:
1、此處id_rsa必須與server端的公鑰配對
2、如id_rsa文件放在其他目錄,記得加上路徑
