云服務(wù)器Linux SSH無(wú)法遠(yuǎn)程登錄問(wèn)題排查指引
對(duì)于云服務(wù)器Linux,SSH 客戶端是主要的運(yùn)維途徑。而管理終端可以用于臨時(shí)運(yùn)維,或者在客戶端登錄出現(xiàn)異常時(shí),用于問(wèn)題排查分析。本文就 SSH 無(wú)法登錄的可能原因及排查方法進(jìn)行說(shuō)明。
無(wú)法登錄常見(jiàn)現(xiàn)象及處理辦法
針對(duì)前述不同因素,常見(jiàn)的問(wèn)題現(xiàn)象及處理辦法說(shuō)明如下:
客戶端問(wèn)題
中間網(wǎng)絡(luò)問(wèn)題
PAM 安全框架相關(guān)問(wèn)題
Linux 系統(tǒng)環(huán)境配置問(wèn)題
SSH 服務(wù)及參數(shù)配置問(wèn)題
SSH 服務(wù)關(guān)聯(lián)目錄或文件配置問(wèn)題
SSH 服務(wù)密鑰配置問(wèn)題
客戶端問(wèn)題
客戶端無(wú)法正常登錄時(shí),建議先使用不同的 SSH 客戶端基于相同賬戶信息進(jìn)行登錄測(cè)試。如果能正常登錄,則判斷是客戶端配置問(wèn)題,需要對(duì)客戶端配置或軟件運(yùn)行情況做排查分析。
Linux 服務(wù)器的登錄過(guò)程說(shuō)明,可以參閱產(chǎn)品文檔:登錄實(shí)例。
中間網(wǎng)絡(luò)問(wèn)題
客戶端無(wú)法正常通過(guò) SSH 連接服務(wù)器時(shí),先通過(guò)如下方式進(jìn)行 telnet 端口測(cè)試,判斷是否是中間網(wǎng)絡(luò)異常所致:
telnet <服務(wù)器 IP>
正常情況下,如下圖所示,會(huì)返回服務(wù)端 SSH 軟件版本號(hào):
如果端口測(cè)試失敗,則可以參閱如下文檔針對(duì)客戶端到服務(wù)器之間的網(wǎng)絡(luò)做進(jìn)一步排查分析:
ping 丟包或不通時(shí)鏈路測(cè)試說(shuō)明
能 ping 通但端口不通時(shí)端口可用性探測(cè)說(shuō)明
網(wǎng)絡(luò)異常時(shí)抓包操作說(shuō)明
PAM 安全框架相關(guān)問(wèn)題
Linux 系統(tǒng)的 PAM 安全框架,可以加載相關(guān)安全模塊,對(duì)服務(wù)器的賬戶策略、登錄策略等進(jìn)行訪問(wèn)控制。如果相關(guān)配置存在異常,或觸發(fā)了相關(guān)策略,就可能會(huì)導(dǎo)致 SSH 登錄失敗。與PAM 安全框架相關(guān)的常見(jiàn)案例如下:
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:pam_listfile(sshd:auth): Refused user root for service sshd
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:requirement "uid >= 1000" not met by user "root"
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:Maximum amount of failed attempts was reached
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:login: Module is unknown
Linux 系統(tǒng)環(huán)境配置問(wèn)題
Linux 內(nèi)的系統(tǒng)環(huán)境(比如中毒、賬戶配置、環(huán)境變量配置等)如果出現(xiàn)異常,也可能會(huì)導(dǎo)致 SSH 登錄失敗。與 Linux 系統(tǒng)環(huán)境相關(guān)的常見(jiàn)案例如下:
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:ssh_exchange_identification: read: Connection reset by peer
中毒導(dǎo)致 SSH 服務(wù)運(yùn)行異常,出現(xiàn)如下錯(cuò)誤:fatal: mm_request_send: write: Broken pipe
SSH 服務(wù)啟動(dòng)時(shí)出現(xiàn)如下錯(cuò)誤:main process exited, code=exited
SSH 連接時(shí)出現(xiàn)如下錯(cuò)誤:pam_limits(sshd:session):could not sent limit for ‘nofile’
SSH 連接時(shí)出現(xiàn)如下錯(cuò)誤:pam_unix(sshdsession) session closed for user
SSH 連接時(shí)出現(xiàn)如下錯(cuò)誤:error Could not get shadow infromation for root
SSH 服務(wù)及參數(shù)配置問(wèn)題
SSH 服務(wù)的默認(rèn)配置文件為 /etc/ssh/sshd_config。配置文件中的相關(guān)參數(shù)配置異常,或啟用了相關(guān)特性或策略,也可能會(huì)導(dǎo)致SSH 登錄失敗。與 SSH 服務(wù)及參數(shù)配置相關(guān)的常見(jiàn)案例如下:
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:Disconnected:No supported authentication methods available
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:User root not allowed because not listed in
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:Permission denied, please try again
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:Too many authentication failures for root
SSH 服務(wù)啟動(dòng)時(shí)出現(xiàn)如下錯(cuò)誤:error while loading shared libraries
SSH 服務(wù)啟動(dòng)時(shí)出現(xiàn)如下錯(cuò)誤:fatal: Cannot bind any address
SSH 服務(wù)時(shí)出現(xiàn)如下錯(cuò)誤:Bad configuration options
云服務(wù)器 Linux SSH 啟用 UseDNS 導(dǎo)致連接速度變慢
SSH 服務(wù)關(guān)聯(lián)目錄或文件配置問(wèn)題
SSH 服務(wù)基于安全性考慮,在運(yùn)行時(shí),會(huì)對(duì)相關(guān)目錄或文件的權(quán)限配置、屬組等進(jìn)行檢查。過(guò)高或過(guò)低的權(quán)限配置,都可能會(huì)引發(fā)服務(wù)運(yùn)行異常,進(jìn)而導(dǎo)致客戶端登錄失敗。與 SSH 服務(wù)關(guān)聯(lián)目錄或文件配置相關(guān)的常見(jiàn)案例如下:
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:No supported key exchange algorithms
SSH 服務(wù)啟動(dòng)時(shí)出現(xiàn)如下錯(cuò)誤:must be owned by root and not group or word-writable
SSH 服務(wù)密鑰配置問(wèn)題
SSH 服務(wù)采用非對(duì)稱加密技術(shù),對(duì)所傳輸?shù)臄?shù)據(jù)進(jìn)行加密??蛻舳思胺?wù)端會(huì)交換和校驗(yàn)相關(guān)密鑰信息的有效性。與 SSH 服務(wù)密鑰配置相關(guān)的常見(jiàn)案例如下:
SSH 登錄時(shí)出現(xiàn)如下錯(cuò)誤:Host key verification failed
云服務(wù)器 Linux SSH 連接交互過(guò)程簡(jiǎn)介
云服務(wù)器 Linux SSH 基于密鑰交換的自動(dòng)登錄原理簡(jiǎn)介及配置說(shuō)明
SSH 無(wú)法登錄問(wèn)題排查思路
如果根據(jù)前述問(wèn)題場(chǎng)景進(jìn)行排查和處理后,還是無(wú)法正常登錄。則建議按照如下步驟進(jìn)行逐一排查分析:
多客戶端對(duì)比測(cè)試:
使用不同的 SSH 客戶端及 管理終端 做對(duì)比訪問(wèn)測(cè)試,以判斷是否是個(gè)別客戶端自身配置或軟件運(yùn)行問(wèn)題所致。如果管理終端登錄正常,也可以通過(guò)管理終端進(jìn)入系統(tǒng)做進(jìn)一步排查分析。
網(wǎng)絡(luò)測(cè)試:
參閱前文中間網(wǎng)絡(luò)問(wèn)題小節(jié)相關(guān)說(shuō)明,測(cè)試網(wǎng)絡(luò)連通性。
服務(wù)端日志獲?。?/p>
通過(guò) 管理終端 進(jìn)入服務(wù)器。然后在客戶端重新訪問(wèn)測(cè)試時(shí),通過(guò)如下指令同步獲取服務(wù)端相關(guān)日志信息:tailf /var/log/secure
客戶端日志獲取:
如果客戶端是 Linux 環(huán)境,則可以通過(guò)如下指令,獲取詳細(xì)的 SSH 登錄交互日志:
ssh -vvv <服務(wù)器 IP>比如:[root@centos~]# ssh -vvv 192.168.0.1OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013debug1: Reading configuration data /etc/ssh/ssh_configdebug1: Applying options for debug2: ssh_connect: needpriv 0debug1: Connecting to 192.168.0.1 [192.168.0.1] port 22.debug1: connect to address 192.168.0.1 port 22: Connection timed outssh: connect to host 192.168.0.1 port 22: Connection timed out
SSH 服務(wù)運(yùn)行狀態(tài)檢查:
通過(guò) 管理終端 登錄服務(wù)器,然后通過(guò)如下方式檢查 SSH 服務(wù)運(yùn)行狀態(tài):
檢查服務(wù)運(yùn)行狀態(tài):
通過(guò)如下指令檢查服務(wù)運(yùn)行狀態(tài)。正常情況下會(huì)返回運(yùn)行狀態(tài)及相應(yīng)進(jìn)程 PID:
[root@centos ~]# service sshd statusopenssh-daemon (pid 31350) is running…
[root@centos ~]# service sshd restartStopping sshd: [ OK ]
Starting sshd:[ OK ]
檢查服務(wù)監(jiān)聽(tīng)狀態(tài):
通過(guò)如下指令檢查服務(wù)監(jiān)聽(tīng)狀態(tài)。正常情況下會(huì)返回相應(yīng)端口監(jiān)聽(tīng)信息:
netstat -ano | grep 0.0.0.0:22tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN off (0.00/0/0)
127.0.0.1 登錄測(cè)試:
通過(guò) 管理終端 登錄服務(wù)器,然后 ssh 127.0.0.1。如果能正常登錄,則推斷是系統(tǒng)防火墻配置異常,導(dǎo)致客戶端登錄失敗。