Linux下定制SSH來簡化遠(yuǎn)程訪問的方法

SSH 使用系統(tǒng)全局以及用戶指定(用戶自定義)的配置文件。在本文中,我們將介紹如何創(chuàng)建一個自定義的 ssh 配置文件,并且通過特定的選項來連接到遠(yuǎn)程主機(jī)。
SSH (指 SSH 客戶端)是一個用于訪問遠(yuǎn)程主機(jī)的程序,它使得用戶能夠 在遠(yuǎn)程主機(jī)上執(zhí)行命令。這是在登錄遠(yuǎn)程主機(jī)中的最受推崇的方法之一,因為其設(shè)計目的就是在非安全網(wǎng)絡(luò)環(huán)境上為兩臺非受信主機(jī)的通信提供安全加密。
SSH 使用系統(tǒng)全局以及用戶指定(用戶自定義)的配置文件。在本文中,我們將介紹如何創(chuàng)建一個自定義的 ssh 配置文件,并且通過特定的選項來連接到遠(yuǎn)程主機(jī)。
先決條件:
1.你必須 在你的桌面 Linux 上安裝好 OpenSSH 客戶端。
2.了解通過 ssh 進(jìn)行遠(yuǎn)程連接的常用選項。
SSH 客戶端配置文件
以下為 ssh 客戶端配置文件:
1./etc/ssh/ssh_config 為默認(rèn)的配置文件,屬于系統(tǒng)全局配置文件,包含應(yīng)用到所有用戶的 ssh 客戶端的設(shè)置。
2.~/.ssh/config 或者 $HOME/.ssh/config 為用戶指定/自定義配置文件,這個文件中的配置只對指定的用戶有效,因此,它會覆蓋掉默認(rèn)的系統(tǒng)全局配置文件中的設(shè)置。這也是我們要創(chuàng)建和使用的文件。
默認(rèn)情況下,用戶是通過在 ssh 中輸入密碼來獲取驗證的,你可以以一個簡單的步驟來 使用 Keygen 來設(shè)置 ssh 無密碼登錄。
注:如果你的系統(tǒng)上不存在 ~/.ssh 目錄,那就手動創(chuàng)建它,并設(shè)置如下權(quán)限:
$ mkdir -p ~/.ssh $ chmod 0700 ~/.ssh
以上的 chmod 命令表明,只有目錄屬主對該目錄有讀取、寫入和執(zhí)行權(quán)限,這也是 ssh 所要求的設(shè)置。
如何創(chuàng)建用戶指定的 SSH 配置文件
該文件并不會被默認(rèn)創(chuàng)建的,所以你需要使用具有讀取/寫入權(quán)限的用戶來創(chuàng)建它。
$ touch ~/.ssh/config $ chmod 0700 ~/.ssh/config
上述文件包含由特定主機(jī)定義的各個部分,并且每個部分只應(yīng)用到主機(jī)定義中相匹配的部分。
~/.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
如上格式詳解:
1.Host host1 為關(guān)于 host1 的頭部定義,主機(jī)相關(guān)的設(shè)置就從此處開始,直到下一個頭部定義 Host host2 出現(xiàn),這樣形成一個完整的定義。
2.host1 和 host2 是在命令行中使用的主機(jī)別名,并非實際的遠(yuǎn)程主機(jī)名。
3.其中,如 sshoption1=value1、sshoption2=value1 value2 等配置選項將應(yīng)用到相匹配的主機(jī),可以縮進(jìn)以看起來更整齊些。
4.對于 ssh_option2=value1 value2 這樣的選項,ssh 執(zhí)行時會按照順序優(yōu)先使用 value1 的值。
5.頭部定義 Host * (其中 * 為匹配模式/通配符,匹配零個或多個字符) 會匹配零個或者多個主機(jī)。
仍舊以上述的格式為例,ssh 也是也這樣的形式類讀取配置文件的。如果你執(zhí)行 ssh 命令來訪問遠(yuǎn)程主機(jī) host1,如下:
$ ssh host1
以上 ssh 命令會進(jìn)行一下動作:
1.匹配配置文件中主機(jī)別名 host1,并使用頭部定義中的各個設(shè)置項。
2.繼續(xù)匹配下一個主機(jī)定義,然后發(fā)現(xiàn)命令行中提供的主機(jī)名沒有匹配的了,所以接下來的各個設(shè)置項會被略過。
3.最后執(zhí)行到最后一個主機(jī)定義 Host *, 這會匹配所有的主機(jī)。這里,會將接下來的所有設(shè)置選項應(yīng)用到所有的主機(jī)連接中。但是它不會覆寫之前已經(jīng)有主機(jī)定義的那些選項。
4.ssh host2 與此類似。
如何使用用戶指定的 shh 配置文件
在你理解了 ssh 客戶端配置文件的工作方式之后,你可以通過如下方式來創(chuàng)建它。記得使用你的服務(wù)器環(huán)境中對應(yīng)的選項、值 (主機(jī)別名、端口號、用戶名等)。
通過你最喜歡的編輯器來打開配置文件:
$ 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 配置文件的詳細(xì)解釋:
1.HostName - 定義真正要登錄的主機(jī)名,此外,你也可以使用數(shù)字 IP 地址,不管是在命令行或是 HostName 定義中都允許使用其中任一種。
2.User – 指定以哪一個用戶來登錄。
3.Port – 設(shè)置連接遠(yuǎn)程主機(jī)的端口,默認(rèn)是 22 端口。但必須是遠(yuǎn)程主機(jī)的 sshd 配置文件中定義的端口號。
4.Protocol – 這個選項定義了優(yōu)先使用 ssh 支持的協(xié)議版本。常用的值為 ‘1’ 和 ‘2’,同時使用兩個協(xié)議版本則必須使用英文逗號隔開。
5.IdentityFile – 指定一個用于讀取用戶 DSA、Ed25519、ECDSA 等授權(quán)驗證信息的文件。
6.ForwardX11 – 定義 X11 連接是否自動重定向到安全通道和 DISPLAY 設(shè)置。有兩個可以設(shè)置的值,即 yes 或 no。
7.Compression – 默認(rèn)值為 no,如果設(shè)置為 yes,則在連接遠(yuǎn)程主機(jī)過程中使用壓縮進(jìn)行傳輸。
8.ServerAliveInterval – 設(shè)置當(dāng)沒有收到服務(wù)器響應(yīng) (或者數(shù)據(jù)))時的超時時間,單位為秒,ssh 會通過加密信道發(fā)送信息,請求服務(wù)器響應(yīng)。默認(rèn)值為 0,這意味著 ssh 不會向服務(wù)器發(fā)送響應(yīng)請求;如果定義了 BatchMode 選項,則默認(rèn)是 300 秒。
9.ServerAliveCountMax – 設(shè)置服務(wù)器在沒有接收到服務(wù)器的任何響應(yīng)時,由服務(wù)器發(fā)送的活動信息數(shù)量。
10.LogLevel – 定義 ssh 登錄信息的的日志冗余級別。允許的值為:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2 和 DEBUG3,默認(rèn)為 INFO。
連接任意遠(yuǎn)程主機(jī)的標(biāo)準(zhǔn)方法是在上述兩個文件中定義第二個部分(我連接的是 CentOS 7)。一般情況下,我們這樣輸入命令:
$ ssh -i ~/.ssh/id_rsa -p 22 tecmint@192.168.56.10
然而,使用了 ssh 客戶端配置文件之后,我們還可以這樣:
$ ssh centos7
你也可以在 man 幫助頁面尋找更多的設(shè)置選項和使用實例:
$man ssh_config
至此,文畢。我們在文中向你介紹了在 Linux 中如何使用用戶指定 (自定義) 的 ssh 客戶端配置文件。
相關(guān)文章
Linux的SSH服務(wù)的開啟與應(yīng)用 中文WORD版
本文檔主要講述的是Linux的SSH服務(wù)的開啟與應(yīng)用;SSH服務(wù)是比Telnet更安全的遠(yuǎn)程登錄方式,其通信過程會進(jìn)行加密傳輸,而不會像Telnet的明文傳輸,SSH默認(rèn)使用的端口是22,2017-02-06Linux系統(tǒng)SSH免密碼登陸遠(yuǎn)程服務(wù)器的技巧
Linux系統(tǒng)想要免密遠(yuǎn)程登陸,該怎么做呢?所謂無密碼登陸其實是指通過證書認(rèn)證的方式登陸,下面我們就來看看詳細(xì)的設(shè)置方法,需要的朋友可以參考下2016-12-20CentOS服務(wù)器端配置SSH遠(yuǎn)程連接的教程
這篇文章主要介紹了CentOS服務(wù)器端配置SSH遠(yuǎn)程登陸的教程,通過運(yùn)行OpenSSH server程序來使客戶端機(jī)器遠(yuǎn)程登陸服務(wù)器,文中還講到了中文亂碼問題的解決方法,需要的朋友可以參2016-04-21Linux下快速安裝部署遠(yuǎn)程連接軟件SSH的簡明教程
這篇文章主要介紹了安裝部署遠(yuǎn)程連接軟件SSH的簡明教程,包括Linux系統(tǒng)的客戶端和服務(wù)器端的配置,簡明扼要,需要的朋友可以參考下2016-01-28- 這篇文章主要介紹了Linux系統(tǒng)中SSH命令的使用教程,使用SSH軟件及SSH命令遠(yuǎn)程連接服務(wù)器已經(jīng)成為最普遍的運(yùn)維連接方法之一,需要的朋友可以參考下2016-01-19
Linux環(huán)境中遠(yuǎn)程開啟ssh端口和更改ssh用戶根目錄
這篇文章主要介紹了Linux環(huán)境中遠(yuǎn)程開啟ssh端口和更改ssh用戶根目錄的方法,其中更改ssh用戶根目錄使用到了jailkit chroot軟件,需要的朋友可以參考下2015-11-10SSH登錄Linux服務(wù)器慢或者登陸錯誤的解決方法分享
這篇文章主要介紹了SSH登錄Linux服務(wù)器慢或者登陸錯誤的解決方法分享,作者同時也對比了Debian和CentOS上各自出現(xiàn)問題的情況,需要的朋友可以參考下2015-09-22管理用SSH遠(yuǎn)程登錄Linux服務(wù)器的用戶的權(quán)限
這篇文章主要介紹了管理用SSH遠(yuǎn)程登錄Linux服務(wù)器的用戶的權(quán)限,包括維護(hù)安全時禁止登錄等方法,需要的朋友可以參考下2015-07-03- 這篇文章主要介紹了Linux SSH登錄很慢的解決方法,本文介紹了兩種解決方法,分別是DNS反向解析問題、關(guān)閉ssh的gssapi認(rèn)證,需要的朋友可以參考下2015-06-16
Linux服務(wù)器端SSH遠(yuǎn)程連接速度慢的解決方法
這篇文章主要介紹了Linux服務(wù)器端SSH遠(yuǎn)程連接速度慢的解決方法,主要針對DNS解析所帶來的相關(guān)速度問題,需要的朋友可以參考下2015-05-27