升級OpenSSL之後無法ssh怎麼辦?解決方法來了

一、使用telnet遠程連接服務器
telnet由於是不安全的明文傳輸所以被加密傳輸的ssh所取代;但是當我們升級OpenSSL時爲了預防sshd重啓失敗而導致與服務器失聯,可以提前使用telnet連接預防這種情況的發生。
須知:使用telnet 連接服務器時,必須使用普通用戶登錄,然後su 到root,所以我們需要提前創建好普通用戶

1.安裝與啓動

rpm -qa | grep telnet              #查看是否安裝
yum install -y telnet              #裝客戶端,可選
yum install -y telnet-server       #安裝服務端
yum install -y xinetd       

service telnet
{
    flags       = REUSE
    socket_type = stream
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    log_on_failure += USERID
    disable     = no
}

複製進etc/xinetd.conf
然後重啓xinetd

systemctl restart xinetd
lsof -i:23  查看 telnetd 服務是否起來

二、關於爲什麼需要xinetd的討論

對於ssh等諸多服務我們都習慣用systemctl來直接啓停;但對於telnet與衆不同的啓動方式讓人迷惑,我們啓動telnet爲什麼要啓動另一個程序來啓動呢?
事情得從Linux的程序運行說起,我們會注意到經常我們在一個終端執行命令,如果終端被關閉無論命令是否已完成都會被中止,也就是說Linux中普通命令要依賴於終端而生存的。
對於一項服務比如http,如果終端退出就中止這個不可接受的;而要一個終端一直在那登錄着也是不現實的。
解決這個問題就要使服務的進程變爲與終端無關的守護進程(也因此常常把守護進程用作服務的意思)
守護進程的實現又有兩種方式:一是自身變爲守護進程,一是拖管於xinetd超級守護進程。
自身變爲守護程,即進程一直駐在內存等待客戶端請求;httpd等正是這種方式(d正是daemon,守護進程模式的意思)。
拖管於xinetd超級守護進程,即一般是休眠狀態xinetd檢測到其監聽的端口有客戶端請求到來之後再去通知喚醒他;telnet正是這種方式。
所有的服務都可以拖管於xinetd方式;但使用這種方式的服務正越來越少,以致我們都不瞭解這是什麼東西。
這有兩個原因,一是對於httpd這種頻繁請求的服務,頻繁喚醒並不見得比自身爲守護進程節省資源。
二是現在的資源並不像以前那樣緊缺,使用方便易懂(在這是啓停)的優先級已然要高於節省資源的優先級

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章