在之前的linux服務器遠程復制文件/目錄,遠程上傳文件/目錄以及ssh遠程連接中,主要說明了操作步驟和一些基本的原理。這里主要介紹一下幾個常見的遠程訪問協議:telnet,rlogin,ssh。
一般來說,不管什么協議,大體上的訪問步驟基本是確定的:
1.兩台機器上安裝對應協議的server和client
2.服務端啟動,並做好相應的配置
3.客戶端發起遠程鏈接,與遠程的服務端進行交互
有了上述認知,那么不論我們使用什么樣的遠程訪問軟件,圖形化的也好,命令形式的也好,只要抓住兩個最關鍵的點就行:一個是協議;一個是端口號,端口號就是這個服務端啟動時配置的端口。其它的參數如ip,賬號密碼這些都是必須的,但都很容易理解。
【Telnet】
Windows上這個用的還是比較多,雖然不安全,但是一些簡單的試探性地工作可以交由它來完成,主要是圖個方便。
Telnet分為telnet-server和telnet兩個安裝包,一個服務端,一個客戶端,一般系統是默認安裝了telnet的。如果在cmd打開后發現:

那就說明在你的電腦中telnet客戶端沒有安裝,安裝的流程如下圖。這里是win10版本的,其它版本的可以自行搜索解決:

與ping不同的是,這個telnet是可以直接嘗試去連接某個具體的端口。
在實際開發場景中,我經常會遇到服務器的某個服務無法訪問的情況。由於我們使用的是阿里雲服務器,里面很多端口是需要特定的配置才會被外部訪問到,但是擁有權限的配置人員經常記不清楚到底是開了還是沒開,這里就可以使用到telnet進行快速驗證:
telnet ip/domain port
如果鏈接成功,則進入到一個閃爍游標的黑屏;如果鏈接失敗,則會顯示不能打開到主機的鏈接:

鏈接成功后,使用Ctrl+]可以看到操作界面:

另外,我也經常會使用telnet來檢查dubbo服務的相關信息。
cmd中輸入<telnet ip dubbo服務端口>見到閃爍游標的黑屏后,鍵入Enter,即可使用一些命令查看dubbo服務的情況:

你甚至可以輸入接口參數調用dubbo服務,這里不展開,可以自行搜索。
與ssh相比,telnet的明文傳輸是很不安全的,部分Linux服務器甚至已經不支持使用telnet進行通訊,但很多時候我們還是可以簡單使用telnet幫助我們快速定位問題。
本質上來說,telnet就是我們從客戶端輸入,再通過telnet客戶端經由TCP協議鏈接到telnet服務端,服務端根據接收到的內容偽裝成一個終端登錄到服務器中執行命令。如圖:
【Rlogin】
Rlogin與Telnet類似,但是簡單很多。
【SSH】
Secure Shell的縮寫,與前兩個協議相比,ssh是安全的,它是專為遠程登錄會話和其他網絡服務提供安全性的協議。它通過將報文不對稱加密,通過公鑰私鑰加密解密的方式保證了傳輸內容的安全性。
它的工作原理,在ssh遠程連接一文中已經展示。默認端口22,當然你也可以配置。安全協議版本是SSH2(還有個SSH1版本,有缺陷)。
在linux服務器中,我們可以在/etc/ssh/目錄下看到相關的配置文件:

其中moduli是一個模數文件,存放着多組模數信息。在ssh進行dh密鑰交換時會用到,我對它也沒有深入了解,讀者可以自行研究。
剩下的key和key.pub是對應到不同host生成的公鑰私鑰對。剩下的ssh_config是ssh客戶端的配置文件,而sshd_config是ssh服務端的配置文件。一般都是使用默認的配置,如果你想將其改造,比如修改端口,可以在服務端配置中修改對應內容。以下是幾個比較常用的命令:
查看是否已經安裝了ssh、安裝ssh
rpm -qa|grep ssh
yum -y install ssh
ssh服務的啟動與停止
systemctl start sshd
systemctl stop sshd
