優(yōu)化ssh連接體驗(yàn)
別看我寫(xiě)了好多篇CentOS8的搭建文章,就感覺(jué)我對(duì)linux很熟一樣,每次敲起指令,總是惴惴不安,我也是linux新手。個(gè)人覺(jué)得,ssh連接加一個(gè)可視化的文件管理界面,能比較好上手,畢竟在Linux世界里,一切皆文件。
之前一直在用finalshell,有文件管理界面,有資源占用界面,長(zhǎng)時(shí)間連著ssh也不會(huì)被中斷,還有一點(diǎn)是可以保存連接密碼。不過(guò)由于通過(guò)finalshell創(chuàng)建的screen,運(yùn)行tshock界面顯示錯(cuò)亂,沒(méi)法正常操作,所以在尋找替代品,之后發(fā)現(xiàn)其實(shí)ssh本身有很多特性。
經(jīng)過(guò)一段時(shí)間的觀察,我個(gè)人是winscp、WindowsTerminal、FinalShell混著用的。
screen下顯示錯(cuò)亂問(wèn)題
screen可以讓tshock后臺(tái)運(yùn)行,這樣當(dāng)你斷開(kāi)ssh連接的時(shí)候,tshock不會(huì)被強(qiáng)制關(guān)掉。
tshock5.0版本開(kāi)始,發(fā)現(xiàn)用finalshell連接服務(wù)器,然后創(chuàng)建screen,運(yùn)行tshock會(huì)出現(xiàn)文字顯示錯(cuò)亂的情況,服務(wù)器剛啟動(dòng)的時(shí)候,看著都是正常的,一段時(shí)間后服務(wù)器,控制臺(tái)界面上就會(huì)出現(xiàn)很多重復(fù)的文字,情況如下圖:

剛開(kāi)服后,立馬進(jìn)服,會(huì)發(fā)現(xiàn)控制臺(tái)漏了很多文字,輸入指令也沒(méi)個(gè)提示,當(dāng)你輸入exit(這個(gè)是關(guān)服指令),然后敲enter鍵后服務(wù)器有正常關(guān)閉,也就是說(shuō)在控制臺(tái)界面上輸指令是能夠被執(zhí)行的,但是沒(méi)有文字提示,你不知道指令執(zhí)行了沒(méi)有,你剛才輸了啥,結(jié)果是啥。

那怎么解決呢!?
思路1:不解決,大不了,我不在控制臺(tái)輸指令。著急開(kāi)服的話可以不管,但是經(jīng)常用的絕對(duì)要解決。
思路2:換掉screen,比如termux,后面我去試了,功能相同,用法類(lèi)似,不過(guò)由于我熟悉了screen,之前寫(xiě)的備份腳本也是基于screen,就沒(méi)換。
思路3:換ssh連接工具,后面發(fā)現(xiàn)如果你用cmd直接連接服務(wù)器,在cmd上面創(chuàng)建screen,顯示都正常了,而且,創(chuàng)建好screen后,再用finalshell進(jìn)入這個(gè)screen顯示也是正常的。cmd每臺(tái)windows電腦都有啊,用cmd也不是不行。
ssh斷連問(wèn)題
當(dāng)你連著ssh,再去查點(diǎn)東西,過(guò)了一段時(shí)間回來(lái)操作時(shí),發(fā)現(xiàn)ssh斷開(kāi)連接了,亦或者是你在執(zhí)行一條指令,執(zhí)行時(shí)間很長(zhǎng),還沒(méi)看到執(zhí)行結(jié)果,就斷開(kāi)連接了。之前用finalshell不會(huì)這樣。那用cmd得解決這個(gè)問(wèn)題,而且之前我用winscp的時(shí)候,也老是斷連。搜索發(fā)現(xiàn)可以設(shè)置ssh保持連接。具體是這樣。
服務(wù)器這邊。通過(guò)ssh連接服務(wù)器,然后執(zhí)行下面的指令
在sshd_config文件中加入這些內(nèi)容,意思是15s重連一次,默認(rèn)重連10次:
修改完配置文件后,輸入下面的指令重啟ssh服務(wù):
自己電腦這邊。找到我的文檔目錄下“.ssh”目錄,例如我的是“C:\Users\hf\.ssh\”,用記事本打開(kāi)里面的“config”文件(這個(gè)是文件,且沒(méi)有擴(kuò)展名),如果沒(méi)找到,就自己新建一個(gè)。加入這些內(nèi)容,tx是騰訊的意思,可以寫(xiě)別的,123.123.123.123請(qǐng)?zhí)鎿Q成你的服務(wù)器ip,root是用戶名,后面三行是保持連接相關(guān)的配置:
保存配置文件。
操作完成后,手動(dòng)斷開(kāi)與服務(wù)器的ssh連接,重連后就是保持連接狀態(tài)了。
備注:最近發(fā)現(xiàn),windows下也有不少ssh連接軟件,其中tabby也是不會(huì)斷連的,但個(gè)人覺(jué)得它的啟動(dòng)速度不夠快,界面操作感覺(jué)不順手,文件管理體驗(yàn)也比較原始,于是沒(méi)怎么用。
連接時(shí)不用輸密碼
每次連接,都要輸入密碼,關(guān)了窗口,再次連接又要求輸入一次。其實(shí)現(xiàn)在大部分連接軟件,都支持保存密碼了,但是用cmd的話確實(shí)是沒(méi)有保存密碼的功能,但是有兩種優(yōu)化思路。
思路1:減少輸入次數(shù),電腦開(kāi)機(jī)后首次連接,輸入一次密碼,下次再連,就不用輸了。
跟上一個(gè)段落的步驟類(lèi)似,也是修改電腦這一段的配置文件,找到我的文檔目錄下“.ssh”目錄,例如我的是“C:\Users\hf\.ssh\”,用記事本打開(kāi)里面的“config”文件,在對(duì)應(yīng)的位置加上“ForwardAgent yes”,意思是允許ssh客戶端進(jìn)行代理轉(zhuǎn)發(fā),例如:
思路2:通過(guò)ssh密鑰連接,設(shè)置好密鑰后,直接輸入連接指令就可以直接連接(說(shuō)了一句廢話)。
首先在自己電腦上創(chuàng)建一個(gè)密鑰。在cmd上輸入“ssh-keygen”,指令執(zhí)行后會(huì)提示你文件保存位置,是否需要設(shè)置密碼,這里我都是直接敲enter鍵。

用記事本打開(kāi)“id_rsa.pub”文件,例如在我電腦上地址是這個(gè)“C:\Users\hf\.ssh\id_rsa.pub”。里面的內(nèi)容只有一行,但是很長(zhǎng),按Ctrl+A全選,然后按Ctrl+C復(fù)制。

這里還是以騰訊云的輕量應(yīng)用服務(wù)器為例,找到“密鑰"模塊,然后點(diǎn)擊“創(chuàng)建密鑰”按鈕

選擇“使用已有公鑰”,然后把剛才復(fù)制內(nèi)容,粘貼到“輸入公鑰”這個(gè)輸入框,地域這里要選擇你服務(wù)器所在的地區(qū),例如我的在上海,就選上海,確認(rèn)輸入無(wú)誤后,點(diǎn)擊確定按鈕。

查看云服的實(shí)例詳情,找到“SSH密鑰”模塊,點(diǎn)擊“綁定密鑰”按鈕

勾選之前我們創(chuàng)建的密鑰,然后點(diǎn)“下一步”按鈕。

勾選“同意強(qiáng)制關(guān)機(jī)”,然后點(diǎn)擊“確定”按鈕。

重啟完畢后,在cmd輸入“ssh root@123.123.123.123”,然后敲Enter鍵就,首次連接可能會(huì)出現(xiàn)下圖提示,輸入“yes”然后敲Enter鍵就好了

有時(shí)設(shè)置ssh密鑰登錄后,密碼登錄會(huì)關(guān)掉,如果你使用其它連接提示認(rèn)證失敗時(shí),可以檢查下“密碼登錄”選項(xiàng)是否被關(guān)閉了。
輸入下面的指令修改配置文件
把“PasswordAuthentication no” 改成?“PasswordAuthentication yes” ,就如下圖這樣:

改完之后,輸入下面的指令重啟ssh服務(wù),此時(shí)再次連接就可以通過(guò)密碼連接了:
備注:關(guān)于思路2的一點(diǎn)疑問(wèn),設(shè)置密鑰登錄后,加入我用另一臺(tái)電腦登錄,還需要不需要密碼。答,需要,因?yàn)槊荑€不在另一臺(tái)電腦上。所以安全還是有保證的。
為什么用WindowsTerminal
相信,很多人都用上了win10及以上的系統(tǒng)了,win7系統(tǒng)本文暫不討論。
cmd的文字比較細(xì),看著有點(diǎn)費(fèi)眼睛。

調(diào)大字號(hào),文字還是有點(diǎn)尖尖的。

所以我用“Windows Terminal”,不嚴(yán)謹(jǐn)?shù)刂v,核心還是cmd,但是文字看上去更漂亮了。

為什么用winscp
這個(gè)就不用解釋了吧,好用就完事了。winscp里可以讓你使用ctrl+c和ctrl+v復(fù)制粘貼文件,體驗(yàn),接近windows資源管理。
我個(gè)人一個(gè)操作是,選中一個(gè)文件,快速按下Ctrl+C和Ctrl+V,然后改下名字,就把這個(gè)文件備份到當(dāng)前目錄下了,很是方便。

其實(shí)也有查看單個(gè)文件夾大小的方法,只是老是記不住,winscp提供了一個(gè)查看大小界面。

這里也需要設(shè)置下保持連接,大致操作如下圖,啟用“發(fā)送空SSH包”。這樣winscp就不太會(huì)與服務(wù)器斷開(kāi)連接。

還在用FinalShell
對(duì)還在用,想看看服務(wù)器狀態(tài),還是不自覺(jué)地,打開(kāi)finalshell,看看cpu百分比、內(nèi)存占用。
有一回玩模組,開(kāi)了自動(dòng)備份忘關(guān)了,后面發(fā)現(xiàn)服務(wù)器連不上了,腦袋里一堆問(wèn)號(hào),當(dāng)時(shí)finalshell掛著的,看到磁盤(pán)的可用/大小滿了,突然意識(shí)到哦,服務(wù)器磁盤(pán)滿了,趕緊刪掉過(guò)期的地圖備份。
有時(shí)我也會(huì)從內(nèi)存占用這里,看看tshock有沒(méi)有正常運(yùn)行,有的話就能看到“TShock.Server”。

騷操作選手vscode
vscode就不細(xì)講了,感興趣自己摸索一下。
前段時(shí)間在弄qq機(jī)器人,直接通過(guò)vscode編輯服務(wù)器上的配置文件,編輯完了,直接ctrl+S就保存上傳了,體驗(yàn)不錯(cuò)。不過(guò)通過(guò)vscode創(chuàng)建的screen有問(wèn)題的,甚至都沒(méi)到運(yùn)行tshock那一步。

這里推薦3個(gè)擴(kuò)展,可以看到服務(wù)器端口情況、某個(gè)配置文件的大小,cpu、內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)上傳和下載,以及服務(wù)器開(kāi)機(jī)時(shí)長(zhǎng)。這些應(yīng)該都是可以敲指令看的,但不怎么用,老是記不住,工具帶的話,要方便不少。



某次開(kāi)了tshock的rest功能,使用默認(rèn)端口,總請(qǐng)求錯(cuò)誤,看了下連接,才發(fā)現(xiàn)原來(lái)端口改成別的了,233~

然后發(fā)現(xiàn),我有臺(tái)服務(wù)器居然運(yùn)行了超過(guò)365天,有種魔幻的感覺(jué),要知道我自己的電腦幾乎每天都關(guān)機(jī)。

看似本質(zhì),實(shí)際上就是理解加深了
因?yàn)榻?jīng)常需要上傳下載服務(wù)器上的文件,也習(xí)慣了,直接雙擊服務(wù)器上的文件,使用本機(jī)的vscode編輯完后,保存就立即上傳。所以能有個(gè)客戶端查看和管理服務(wù)器文件,這點(diǎn)太需要了。得知ssh服務(wù)器開(kāi)啟后,基本上也會(huì)開(kāi)啟sftp服務(wù),哦,原來(lái)要找這類(lèi)管理服務(wù)器文件的軟件,得搜索關(guān)鍵詞“sftp”,然后你就有很多答案了。如果你是macOS,可以使用ForkLift。如果你是安卓,可以使用ES文件瀏覽器(終端用的是JuiceSSh),iOS這邊也有一些好用的app,就有一種打開(kāi)“任督二脈”的感覺(jué)。
要找連接服務(wù)器的軟件,就是搜索關(guān)鍵詞“ssh”、“terminal”、“終端”。慢慢滴你會(huì)找到很多答案,這里需要注意的是,這類(lèi)軟件,不要使用破解軟件,以免服務(wù)器密碼和密鑰泄露。
此時(shí)大家會(huì)有很多選擇,選擇你喜歡的就行了。最后發(fā)現(xiàn)ssh的一些基礎(chǔ)知識(shí)是通用的,有種萬(wàn)變不離其宗的感覺(jué),因?yàn)椴欢?,也因?yàn)椴皇煜ぃ柚浖臀覀兺瓿闪撕芏唷昂茈y”的操作,慢慢地,你理解了,發(fā)現(xiàn)a到b,有很多解,你的選擇更自由了!
但此刻linux還有很多東西不懂,實(shí)踐多了,記憶就加深一些,這正是有趣的地方!
