SSH (指 SSH 客戶端)是一個用於訪問遠程主機的程序,它使得用戶可以 在遠程主機上執行命令。這是在登陸遠程主機中的最受推崇的方法之一,由於其設計目的就是在非安全網絡環境上爲兩臺非受信主機的通訊提供安全加密。shell
SSH 使用系統全局以及用戶指定(用戶自定義)的配置文件。在本文中,咱們將介紹如何建立一個自定義的 ssh 配置文件,而且經過特定的選項來鏈接到遠程主機。ubuntu
如下爲 ssh 客戶端配置文件:centos
/etc/ssh/ssh_config
爲默認的配置文件,屬於系統全局配置文件,包含應用到全部用戶的 ssh 客戶端的設置。~/.ssh/config
或者 $HOME/.ssh/config
爲用戶指定/自定義配置文件,這個文件中的配置只對指定的用戶有效,所以,它會覆蓋掉默認的系統全局配置文件中的設置。這也是咱們要建立和使用的文件。默認狀況下,用戶是經過在 ssh 中輸入密碼來獲取驗證的,你能夠以一個簡單的步驟來 使用 Keygen 來設置 ssh 無密碼登陸[2]。安全
注:若是你的系統上不存在 ~/.ssh
目錄,那就手動建立它,並設置以下權限:服務器
$ mkdir -p ~/.ssh $ chmod 0700 ~/.ssh
以上的 chmod
命令代表,只有目錄屬主對該目錄有讀取、寫入和執行權限,這也是 ssh 所要求的設置。網絡
該文件並不會被默認建立的,因此你須要使用具備讀取/寫入權限的用戶來建立它。ssh
$ touch ~/.ssh/config $ chmod 0700 ~/.ssh/config
上述文件包含由特定主機定義的各個部分,而且每一個部分只應用到主機定義中相匹配的部分。編輯器
~/.ssh/config
文件的常見格式以下,其中全部的空行和以 #
開頭的行爲註釋:加密
Host host1 ssh_option1=value1 ssh_option2=value1 value2 ssh_option3=value1 Host host2 ssh_option1=value1 ssh_option2=value1 value2 Host * ssh_option1=value1 ssh_option2=value1 value2
如上格式詳解:centos7
Host host1
爲關於 host1 的頭部定義,主機相關的設置就今後處開始,直到下一個頭部定義 Host host2
出現,這樣造成一個完整的定義。sshoption1=value1
、sshoption2=value1 value2
等配置選項將應用到相匹配的主機,能夠縮進以看起來更整齊些。ssh_option2=value1 value2
這樣的選項,ssh 執行時會按照順序優先使用 value1 的值。Host *
(其中 *
爲匹配模式/通配符,匹配零個或多個字符) 會匹配零個或者多個主機。仍舊以上述的格式爲例,ssh 也是也這樣的形式類讀取配置文件的。若是你執行 ssh 命令來訪問遠程主機 host1,以下:
$ ssh host1
以上 ssh 命令會進行一下動做:
在你理解了 ssh 客戶端配置文件的工做方式以後,你能夠經過以下方式來建立它。記得使用你的服務器環境中對應的選項、值 (主機別名、端口號、用戶名等)。
經過你最喜歡的編輯器來打開配置文件:
$ vi ~/.ssh/config
並定義必要的部分:
Host fedora25 HostName 192.168.56.15 Port 22 ForwardX11 no Host centos7 HostName 192.168.56.10 Port 22 ForwardX11 no Host ubuntu HostName 192.168.56.5 Port 2222 ForwardX11 yes Host * User tecmint IdentityFile ~/.ssh/id_rsa Protocol 2 Compression yes ServerAliveInterval 60 ServerAliveCountMax 20 LogLevel INFO
以上 ssh 配置文件的詳細解釋:
HostName
- 定義真正要登陸的主機名,此外,你也可使用數字 IP 地址,不論是在命令行或是 HostName 定義中都容許使用其中任一種。User
– 指定以哪個用戶來登陸。Port
– 設置鏈接遠程主機的端口,默認是 22 端口。但必須是遠程主機的 sshd 配置文件中定義的端口號。Protocol
– 這個選項定義了優先使用 ssh 支持的協議版本。經常使用的值爲 ‘1’ 和 ‘2’,同時使用兩個協議版本則必須使用英文逗號隔開。IdentityFile
– 指定一個用於讀取用戶 DSA、Ed2551九、ECDSA 等受權驗證信息的文件。ForwardX11
– 定義 X11 鏈接是否自動重定向到安全通道和 DISPLAY 設置。有兩個能夠設置的值,即 yes 或 no。Compression
– 默認值爲 no,若是設置爲 yes,則在鏈接遠程主機過程當中使用壓縮進行傳輸。ServerAliveInterval
– 設置當沒有收到服務器響應 (或者數據))時的超時時間,單位爲秒,ssh 會經過加密信道發送信息,請求服務器響應。默認值爲 0,這意味着 ssh 不會向服務器發送響應請求;若是定義了 BatchMode 選項,則默認是 300 秒。ServerAliveCountMax
– 設置服務器在沒有接收到服務器的任何響應時,由服務器發送的活動信息數量。LogLevel
– 定義 ssh 登陸信息的的日誌冗餘級別。容許的值爲:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG一、DEBUG2和 DEBUG3,默認爲 INFO。鏈接任意遠程主機的標準方法是在上述兩個文件中定義第二個部分(我鏈接的是 CentOS 7)。通常狀況下,咱們這樣輸入命令:
$ ssh -i ~/.ssh/id_rsa -p 22 tecmint@192.168.56.10
然而,使用了 ssh 客戶端配置文件以後,咱們還能夠這樣:
$ ssh centos7
你也能夠在 man 幫助頁面尋找更多的設置選項和使用實例:
$ man ssh_config
至此,文畢。咱們在文中向你介紹了在 Linux 中如何使用用戶指定 (自定義) 的 ssh 客戶端配置文件。