昨天機房裡有一臺CentOS5的伺服器,大概是由於客戶的誤操作,無法SSH遠端訪問。接上顯示器,通過終端進入到系統。

手工檢查ssh發現沒執行
[root@mgate ~]#/etc/init.d/sshd status
sshd is stopped

手工啟動服務,報錯。
[root@mgate ~]#/etc/init.d/sshd start
Starting sshd:/var/empty/sshd must be owned by root and not group or world-writable.
[FAILED]

上網查資料後,得知是報告許可權錯誤,經檢視發現這個目錄的屬主不是root,所以啟動SSH報錯
[root@mgate ~]# ls -ld /var/empty/sshd/
drwxr–r– 3 vu0010root 4096 Nov 27 22:38 /var/empty/sshd/
[root@mgate ~]#

網路資料介紹了一種修改目錄屬性的方法,通過命令 chown root /var/empty/sshd/ 將其修改為root屬主,並啟動SSH,即可成功執行。執行命令後,系統沒有任何響應,
[root@mgate ~]# chown root /var/empty/sshd/
[root@mgate ~]#
再啟動SSH,依然報錯
[root@mgate ~]#/etc/init.d/sshd start
Starting sshd:/var/empty/sshd must be owned by root and not group or world-writable.
[FAILED]

後來通過另一種方法修改許可權後,
[root@mgate ~]#chown   -R  root /var/empty/sshd
[root@mgate ~]#chmod 744 /var/empty/sshd
雖然還是沒任何提示,但這時啟動SSH,可以成功執行了。
[root@mgate ~]#service sshd restart
Stop sshd: [ Fail ]
Starting sshd: [ OK ]

在Windows XP下執行軟體SSH Secure Shell Client,可以正常登入該CentOS5伺服器。問題總算解決了。其時已是三更。

在這期間,曾嘗試著在系統上開通telnet遠端服務,未果。今天上午在虛擬機器上,用Red Hat5系統再除錯telnet,終於成功了。以前都沒接觸過Linux下的telnet,這回的學習、除錯的過程頗有收穫

telnet服務,系統預設是安裝了的,但不執行,需要手動配置telnet檔案。在 /etc/xinetd.d/ 目錄下檢視到有三個telnet檔案,分別是telnet,krb5-telnet,ekrb5-telnet(今早我Red Hat 5.4系統中,發現/etc/xinetd.d/只有krb5-telnet,ekrb5-telnet兩個檔案)。但當時我沒注意krb5-telnet這個檔案。

其中telnet檔案是空的,krb5-telnet,ekrb5-telnet兩檔案的service telnet指令碼是一樣的。如下:
service telnet
{
        flags         = REUSE
        socket_type    = stream
        wait          = no
        user          = root
        server             = /usr/kerberos/sbin/telnet
        log_on_failure  += USERID
        disable       = yes
}

網上有資料說是將telnet檔案的diable設定為no。鑑於該telnet檔案為空,我直接在裡面埴service telnet指令碼。跟上面的基本一樣,不同的是server的路徑:
service telnet
{
        flags         = REUSE
        socket_type    = stream
        wait          = no
        user          = root
        server             = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable       = no
}
並通過service xinetd start 命令啟動telnet,但telnet本機,並不能連通,顯示配置無效。
[root@mgate ~]#telnet 127.0.0.1
Trying 127.0.0.1…
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host: Connection refused

再將ekrb5-telnet的disable值賦為no,這時能telnet了,但由於無法通過加密認證,還是沒法登入
[root@mgate ~]#service xinetd start
Starting xinetd:
[root@mgate ~]#telnet 127.0.0.1
Trying 127.0.0.1…
Connected to localhost.localdomain(127.0.0.1)
Escape character is ‘^]’.
Unencrypted connection refused. Goodbye.

折騰了許長一段時間,一頭霧水,還是搞不掂,走回配置SSH的路,幸好成功,對客戶有交待。

上午再查資料、除錯,終於明白原因所在。telnet檔案是沒啥意義的(所以CentOS 5下為空,Red Hat 5下沒有),krb5-telnet,ekrb5-telnet才是設定telnet的重要檔案。而昨晚要配的,是krb5-telne這個檔案,不過當時卻偏偏沒配,無語。

krb5-telnet:提供telnet服務,允許普通的telnet登陸,預設是不允許root使用者登入,使用kerberos5驗證。
ekrb5-telnet:提供加密的telnet服務,但是必須要ekrb5的加密伺服器。

關於telnet更詳細的內容,請看轉載過來的《在RHEL5中開通Root遠端登入詳解》一文。