Linux下用SCP無需輸入密碼獲取文件

一般用scp命令經過ssh獲取對方linux主機文件的時候都須要輸入密碼確認,若是須要在主機上作一個自動獲取文件的shell腳本,這樣顯然 是不行的,經過下面的設置,能夠不須要輸入密碼,直接獲到文件。
這裏假設主機A用來獲到主機B的文件。linux

  1. 在主機A上執行以下命令來生成配對密鑰:
    ssh-keygen -t rsa

    顯示信息以下:shell

    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Created directory ‘/root/.ssh’.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    45:13:ec:31:f9:3d:25:54:7b:5f:03:40:ba:e9:76:cd root@bindiry-ubuntuubuntu

    按三次回車。安全

  2. 爲 ~/.ssh 目錄設置權限:
    chmod -R 755 .ssh

    將 .ssh 目錄中的 id_rsa.pub 文件複製到 主機B 的 ~/.ssh/ 目錄中,並更名爲 authorized_keys ,一樣給該目錄設置權限。服務器

  3. 到主機A中執行命令和主機B創建信任,例(假設主機B的IP爲:192.168.0.3):
    scp ~/.ssh/id_rsa.pub 192.168.0.3:/root/.ssh/authorized_keys
  4. 下面就能夠用scp命令不須要密碼來獲取主機B的文件了

附scp命令說明:ssh

scp – 安全複製 (遠程文件複製工具)
語法
scp [-1245BCpqrv] [-c cipher] [F ssh_config] [-I identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:] file1 […] [[suer@]host2:]file2
說明
Scp在主機間複製文件。他使用 ssh(1)做爲數據傳輸。並且用一樣認證和安全性。 scp將在認證中請求輸入密碼全部的文件可能須要服務器和用戶的特別描述來指明文件將被複制到/從某臺服務器。兩個遠程登陸的服務器間的文件複製是容許 的。
選項
-1 強制scp 用協議1
-2 強制scp 用協議2
-4 強制scp用IPV4的網址
-6 強制scp用IPV6的網址
-B 選擇批處理模式(防止輸入密碼)
-C 容許壓縮。 標註-C到ssh(1)來容許壓縮
-c cipher 選擇cipher來加密數據傳輸。這個選項直接傳遞到ssh(1)
-F ssh_config 設定一個可變更的用戶配置給ssh.這個選項直接會被傳遞到ssh(1)
-i identity_file 選擇被RSA認證讀取私有密碼的文件。這個選項能夠直接被傳遞到ssh(1)
-l limit 限制傳輸帶寬,也就是速度 用Kbit/s的速度
-o ssh_option 能夠把ssh_config中的配置格式傳到ssh中。這種模式對於說明沒有獨立的scp文件中斷符的scp頗有幫助。
-P port 指定鏈接遠程鏈接端口。注意這個選項須要寫成大寫的模式。由於-p已經早保留了次數和模式
-S program 指定一個加密程序。這個程序必須可讀全部ssh(1)的選項。
-p 指定修改次數,鏈接次數,還有對於原文件的模式
-q 把進度參數關掉
-r 遞歸的複製整個文件夾
-S program 指定一個加密程序。這個程序必須可讀全部ssh(1)的選項。
-V 冗餘模式。 讓 scp 和 ssh(1) 打印他們的排錯信息, 這個在排錯鏈接,認證,和配置中很是有用。ide

相關文章
相關標籤/搜索