Linux主要應用于服務器領域,而服務器不可能像PC機那樣放在辦公室,它們是放在IDC機房的,所以阿銘平時登錄Linux系統(tǒng)都是通過網(wǎng)絡遠程登錄的。
Linux系統(tǒng)通過SSHD服務實現(xiàn)遠程登錄功能。這個SSHD服務默認開啟了22端口,當我們安裝完系統(tǒng)時,該服務已經(jīng)安裝,并且是開機啟動的。所以,我們不需要額外配置什么就能直接遠程登錄Linux系統(tǒng)。SSHD服務的配置文件為/etc/ssh/sshd_config,你可以根據(jù)需求修改這個配置文件,比如我們可以更改啟動端口為11587,但這個數(shù)字不要超過65535。
如果你安裝的是Windows操作系統(tǒng),則需要額外安裝一個Linux遠程登錄的終端軟件。目前比較常見的終端登錄軟件有MobaXterm、Xshell、SecureCRT、PuTTY等。很多朋友喜歡用SecureCRT,因為它的功能非常強大,而阿銘喜歡用PuTTY,因為它小巧且顯示的顏色漂亮。最近阿銘也在使用Moba Xterm,也非常不錯,值得大家研究一下。但不管你使用哪一個客戶端軟件,最終的目的只有一個?—— 遠程登錄到Linux服務器上。下面章節(jié)阿銘會帶著大家學習并使用MobaXterm工具。
4.1 安裝MobaXterm
MobaXterm有免費版和收費版,其中免費版有session數(shù)量限制,如果你所管理的服務器數(shù)量很大,建議購買收費版。MobaXterm內(nèi)置了SFTP、FTP、Telnet、VNC客戶端,非常實用。
4.1.1 下載MobaXterm
前些年網(wǎng)上曾報道過,某個中文版的PuTTY被別有用心的黑客動了手腳,給植了后門,像這種SSH客戶端軟件被植入后門,后果會非常嚴重。所以阿銘提醒各位小伙伴,以后不管你下載什么軟件,盡量去該軟件的官方站點下載,如果不知道地址,可以到百度或者bing搜一下。MobaXterm的官方下載地址為https://mobaxterm.mobatek.net/download.html。打開下載頁面后,我們可以看到有Home Edition和Professional Edition兩個版本,其中Home Edition為免費版,但是最多只支持12個session,對于我們學習來說足夠了。
點擊Download now按鈕進入下載頁,此時可以看到它又分成了Portable edition和Installer edtion,其中Portable edition為免安裝版本,建議大家下載個Installer editon。
4.1.2 安裝
下載MobaXterm的安裝包后,雙擊MobaXterm_Installer_v22.1.zip,然后再雙擊MobaXterm_installer_22.1.msi進入安裝界面。
直接單擊Next按鈕,勾選I accept the terms in theLicense Agreement,繼續(xù)點Next按鈕和Install按鈕即可完成安裝。
4.2 遠程登錄
在上一章中,我們已經(jīng)給Rocky設置了IP地址(192.168.195.101),并且這個IP地址是靜態(tài)的,即使你的VMware重啟過,它也不會變。設置IP地址的目的除了要使用yum工具外,另一個作用就是遠程連接Linux操作系統(tǒng)了。
4.2.1 使用密碼直接登錄
打開MobaXterm后,請按照如下步驟連接遠程Linux服務器。
1)?創(chuàng)建session
填寫Linux基本信息的對話框如下圖所示,
其中Host Name(or IP address)這一欄填寫服務器IP為192.168.195.101,Specify Username用來定義要登錄的用戶名,因為我們要登錄root用戶,所以這里寫root,Port這欄采用默認設置即可。Bootmark settings用來定義session的名字,這里你可以自定義,主要用來區(qū)分主機,因為將來你的主機會很多,寫個簡單的名字既方便記憶又能快速查找。
點確認后,即可進入到登錄界面,此時需要輸入密碼
輸入密碼后回車,彈出是否需要保存密碼的提示,如果想要保存密碼,就點Yes。
然后繼續(xù)定義Master Password
然后再點擊OK,終于進入Linux系統(tǒng)了。
4.2.2 使用密鑰認證
SSH服務支持一種安全認證機制,即密鑰認證。所謂密鑰認證,實際上是使用一對加密的字符串:其中一個稱為公鑰(public key),用于加密,任何人都可以看到其內(nèi)容;另一個稱為私鑰(privatekey),用于解密,只有擁有者才能看到其內(nèi)容。通過公鑰加密過的密文,使用私鑰可以輕松解密,但根據(jù)公鑰來猜測私鑰卻十分困難。SSH的密鑰認證就是使用了這一特性。
服務器和客戶端都各自擁有自己的公鑰和私鑰,MobaXterm可以使用密鑰認證登錄Linux,具體的操作步驟如下。
1)生成密鑰對
在菜單中找到Tools,然后選擇MobaKeyGen單擊。
單擊Generate,注意,這里要來回動一動鼠標,否則生成密鑰會很慢。
其中紅框里面的內(nèi)容就是公鑰,這部分內(nèi)容可以直接用鼠標選中,然后按Ctrl c復制,等會要粘貼到Linux里面去。
你還可以定義密鑰的密碼,如下圖紅框所示,也可以留空,即密鑰不設置密碼。
2)保存私鑰
點擊Save Private Key保存私鑰,請把它保存到一個比較安全的地方,謹防丟失或被其他人看到。然后就可以關閉該窗口啦。
3)復制公鑰到Linux
下面我們把剛復制的公鑰粘貼到Linux的文件中。下面請跟著阿銘一起來操作,運行如下命令:
?
# mkdir /root/.ssh //創(chuàng)建/root/.ssh目錄,因為這個目錄默認是不存在的 # chmod 700 /root/.ssh //更改這個目錄的權(quán)限 # vi /root/.ssh/authorized_keys//把公鑰內(nèi)容粘貼到文件/root/.ssh/authorized_keys里
?
關于mkdir和chmod這兩個命令,阿銘會分別在下一章節(jié)中詳細介紹。在vi命令之后直接回車,輸入i進入編輯模式,然后單擊鼠標右鍵,它會彈出一個提示框,我們選擇下面的選項,意思是點擊右鍵直接粘貼,這是MobaXterm工具非常方便的一個功能。
粘貼后,按Esc鍵,然后輸入:wq并回車,保存并退出該文件。
4)關閉SELinux
關于SELinux,上一章我們也提到過,它是Rocky的一種安全機制,它的存在雖然讓Linux系統(tǒng)安全了很多,但也產(chǎn)生了不少麻煩。這里如果不關閉SELinux,使用密鑰登錄會提示 Server refused our key,從而導致不能成功。需要運行如下命令來關閉SELinux:
?
# setenforce 0
?
這只是暫時關閉,下次重啟Linux后,SELinux還會開啟。若要永久關閉,必須運行如下命令:
?
# vi /etc/selinux/config
?
回車后,把光標移動到SELINUX=enforcing這一行,輸入i進入編輯模式,修改為SELINUX= disabled。按Esc鍵,然后輸入:wq并回車,最后重啟系統(tǒng)。
5)設置通過密鑰登錄
找到剛才保存的session,右鍵單擊,選擇Edit Session。
單擊Advanced SSH settings,找到下面的Use private key勾選上,然后選擇剛剛保存的私鑰文件
6)使用密鑰驗證登錄Linux
點擊ok后,雙擊剛才的session,就可以自動登錄了,但是這還不能確定是否使用了密鑰,畢竟我們剛才的密碼也被保存到了MobaXterm里,也不用輸入密碼就能登錄,你可以通過下面的命令查看日志:
?
# jounal -u sshd
?
如果有看到Accepted publickeyfor root字眼就說明密鑰認證成功了。如果先前生成密鑰時你有設置密碼,則在登錄時需要輸入密鑰密碼才可以登錄系統(tǒng)。有很多朋友在做密鑰認證的時候會失敗,只要你注意這幾點就一定可以成功:
/root/.ssh目錄權(quán)限為700;
SELinux要關閉;
/root/.ssh/authorized_keys文件名要寫對;
文件內(nèi)容要粘貼對。
假如你還有一臺機器要使用密鑰驗證登錄Linux,你學會如何設置了嗎?MobaXterm的設置方法是一樣的,使用同樣的私鑰,不需要你再次生成密鑰對了。另外,把192.168.195.101上的文件/root/.ssh/authorized_keys復制一份到另一臺機器就可以了。請注意,這個文件的名字是固定的。
在本例中,阿銘教大家的是直接使用密鑰登錄root用戶,但在工作中很多朋友登錄的是普通用戶,而不是root。那普通用戶的密鑰認證如何設置呢?原理肯定是一樣的,同樣要先有密鑰對,然后把公鑰放到服務器上,不過并不是/root/.ssh目錄下面了,而是普通用戶家目錄下面的.ssh目錄下。那普通用戶家目錄在哪里?第6章講到用戶管理時,阿銘會詳細介紹,在這里阿銘舉一個例子,比如你登錄的普通用戶為aming,那么aming用戶的家目錄為/home/aming。還有一點大家要注意,在Linux機器上所做的操作(如創(chuàng)建.ssh目錄)也必須以aming用戶身份操作才可以。
4.3 兩臺Linux相互登錄
既然可以在Windows上安裝一個客戶端軟件(比如MobaXterm)去登錄遠程的Linux,那么在Linux上是否也可以登錄另一臺Linux呢?當然,在Linux上也需要安裝一個客戶端軟件。Rocky自帶的客戶端軟件叫作openssh-clients。
檢測是否安裝,需要運行如下命令:
?
# ssh -V OpenSSH_8.0p1, OpenSSL 1.1.1kFIPS 25 Mar 2021
?
這樣會顯示出OpenSSH的版本信息。如果沒有顯示類似的信息,請運行如下命令安裝:
?
# yum install -yopenssh-clients
?
4.3.1 克隆Rocky
要完成本實驗,還需要有一臺Linux機器,你可以按照2.2節(jié)再安裝一臺Rocky。但阿銘覺得那樣做太浪費時間,其實還有一個更好的方法?—— 克隆虛擬機。
首先,關閉正在運行的Rocky,正確的關機命令是shutdown -hnow或者init 0。然后在左側(cè)對應的虛擬機名字上單擊鼠標右鍵,選擇“管理”,再選擇“克隆”,如下圖所示。
此時會出現(xiàn)“克隆向?qū)А苯缑妗V苯狱c擊“下一步”按鈕,再點擊“下一步”按鈕,會出現(xiàn)“克隆類型”對話框,這里采用默認值即可,即選擇“創(chuàng)建鏈接克隆”,這種類型會節(jié)省空間,比較方便。繼續(xù)點擊“下一步”按鈕,你可以設定克隆虛擬機的名稱和保存的路徑。接著點擊“完成”和“關閉”按鈕,最終完成Rocky 8的克隆。此時,不管是在左側(cè)“我的電腦”下面還是在右側(cè)“選項卡”,都多出來一個克隆后的Rocky 8虛擬機。
把兩臺Rocky8全部啟動。先登錄克隆的虛擬機,使用3.2章節(jié)的方法給這臺Rocky 8也配置一個靜態(tài)IP地址。
為了容易區(qū)分兩臺Rocky 8,下面阿銘教你設置主機名。我們不妨給第一臺起個名字aminglinux-01,第二臺叫作aminglinux-02。請在第一臺Rocky 8上運行如下命令:
?
# hostnamectl set-hostname aminglinux-01
?
可以使用快捷鍵Ctrl+D退出當前終端,然后再登錄一次,就會發(fā)現(xiàn)命令行左邊的前綴有所變化了。使用同樣的方法,也將第二臺Rocky 8的主機名設置為aminglinux-02。
4.3.2 使用密碼登錄
使用前面的方法,通過PuTTY遠程登錄aminglinuxlinux-02,然后在這臺機器上執(zhí)行如下命令:
?
# ssh root@192.168.195.102 //第一次登錄對方機器,有一個提示 The authenticity of host '192.168.195.102(192.168.195.102)' can't be established. ECDSA key fingerprint is 26:e3e7ae33aa5f0efa. Are you sure you want to continue connecting (yes/no)
?
這里我們輸入yes,然后回車,又出現(xiàn)一個如下的警告,它的意思是保存了192.168.195.102這臺機器的信息:
?
Warning: Permanently added '192.168.195.102' (ECDSA) to the list of known hosts. root@192.168.195.102's password:
?
然后輸入192.168.195.102的root密碼后,成功登錄aminglinux-02。
這里符號@前面的root表示要以遠程機器哪個用戶的身份登錄。我們可以省略root@,即寫成ssh 192.168.195.102,它也表示以root用戶身份登錄。這個并不是固定的,它取決于當前系統(tǒng)的當前用戶是誰。我們可以使用如下命令查看當前用戶:
?
# whoami root
?
也可以寫成:
?
# who am i root pts/1 2022-09-17 07:06 (192.168.195.101)
?
從這兩個命令的顯示結(jié)果可以看出它們的區(qū)別:一個是簡單顯示,一個是復雜顯示。后者不僅可以顯示username,還可以顯示登錄的終端、登錄時間以及從哪里登錄。
4.3.3 使用密鑰登錄
既然MobarXterm支持使用密鑰驗證的方式登錄Linux機器,那么Linux下的客戶端軟件也是支持的。下面請跟著阿銘一步一步來操作。
1)客戶端生成密鑰對
假如aminglinux-01為客戶端(以下簡稱01),aminglinux-02為要登錄的機器(以下簡稱02)。首先,把剛剛登錄的02退出來,直接使用Ctrl+D快捷鍵即可。然后在01上執(zhí)行如下命令:
?
# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):
?
這個命令用來生成密鑰對。首先,它讓我們定義私鑰的存放路徑,默認路徑為/root/.ssh/ id_rsa。這里采用默認值即可,直接回車,此時會顯示如下信息:
?
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: 57:15d6ed83fc215b83 root@aminglinux-01 The key's randomart image is: +--[ RSA 2048]----+ | ++o. | | . .. | | o.. | | ..o. . | | S....o+ | | .o.++o. | | ooooo.| | Eoo. .| | .. | +-----------------+
?
最終生成了密鑰對,你可以在/root/.ssh/目錄下找到公鑰(id_rsa.pub)和私鑰(id_rsa)。
2)把公鑰復制到要登錄的機器上
首先,我們查看01上公鑰的內(nèi)容,此時運行如下命令:
?
# cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiAUXQihX9pa1oxml6xRjZhjTRCU+QMHUGXU34Q6gBeK/8Qm0hUqPfyASXbV2y6hKH4MHfX4zQcpnkeTgyeIFuKAxoEX98mx8r4owB7X490CH+H8JCRsM9FYlAsbH+kvdIa+sNTMqD5jEY5dh+gNINDDNJiw250cYG9Pe8Y+5slazPYrC0tjWz+AnXhJ1//r9z077rxEMJ1jHZdEn62hIou46i8xny+znJScSeW0uJHTgeX5EbXrArgSUOXyubtsGrov83dSUa39Kfyk4HvXU0azYI8S3h6ZxUOed0dYmic4EMd5VxYPnrgNEgTCRlP3hx/sOCCr0HSWtv+MvREkGd root@aminglinux-01
?
將這些字符串全部復制,然后粘貼到02上的文件/root/.ssh/authorized_keys里。若之前已經(jīng)創(chuàng)建過這個文件,并且已經(jīng)粘貼過MobaXterm的公鑰,則需要另起一行粘貼01的公鑰。在02上執(zhí)行如下命令:
?
# vi /root/.ssh/authorized_keys
?
如果有內(nèi)容,可以按字母G把光標定位到文件末尾,然后輸入o進入編輯模式(這里使用的命令和之前有所不同,請先跟著阿銘操作)。單擊鼠標右鍵即可粘貼01的公鑰。然后按Esc鍵,輸入:wq,再回車。如果你之前并沒有設置MobaXterm的公鑰,請繼續(xù)執(zhí)行以下命令:
?
# chmod 600 /root/.ssh/authorized_keys
?
3)登錄Linux
在01上執(zhí)行如下命令:
?
# ssh 192.168.195.102
?
此時就不再提示我們輸入密碼,就可以直接登錄到02了。這樣就可以實現(xiàn)Linux通過密鑰驗證的方式登錄Linux。如果你在生成密鑰對時設置了密碼,那么這里也會提示你輸入密鑰密碼。為了方便跨機器執(zhí)行命令,這里我們特意不設置密鑰的密碼(后面會用到)。
4)使用ssh-copy-id
Linux系統(tǒng)里還有一種更方便做密鑰認證的方法。這次阿銘要讓02通過密鑰認證登錄01。在02上執(zhí)行如下命令:
?
# ssh-keygen # ssh-copy-id root@192.168.195.101
?
它會提示讓我們輸入01的root密碼,只要輸入對了對方服務器的密碼就完成了密鑰認證。再次嘗試ssh登錄01,此時就不再提示我們輸入密碼,可以直接登錄到01了。
審核編輯:湯梓紅
評論
查看更多