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