自從使用php-syslog-ng監控日志信息後,經常發現一些過去會忽略的報錯信息,目前正逐一解決中。其中一個報錯發生在,我使用密鑰通過ssh登陸到服務器的時候,日志信息顯示:
Nov 19 10:32:20 printserver auth 10:32:20 pam_loginuid[9691]: set_loginuid failed opening loginuid
Nov 19 10:32:20 printserver auth 10:32:20 remote(pam_unix)[9691]: session opened for user root by (uid=0)
Nov 19 10:32:20 printserver auth 10:32:20 sshd[9689]: Accepted publickey for root from 192.168.228.244 port
1487 ssh2
一、原因
操作系統:紅旗DC Server 5.0
分析以前的系統日志,並沒有發現類似的報錯信息,故懷疑是最近的操作導致的。
從兩方面分析:
1、openssh-server從4.0p1升級到4.7p1;
2、使用密鑰登陸代替原來的密碼登陸方式。
先嘗試用原來的密碼方式登陸,沒有報錯;再對比其他機器上原4.0p1版的狀態,使用密鑰登陸,也沒有報錯。由於我升級openssh-server的時候,使用它自帶的默認配置文件而非系統4.0p1版的配置,故覺得報錯,和配置及使用密鑰登陸都有關。
二、解決
經查找資料後測試,可通過修改openssh-server的配置文件解決問題。
修改/etc/ssh/sshd_config為:
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no #關閉挑戰應答方式
UsePAM no #不使用PAM認證
保存後,重啟sshd服務即可。
三、說明
上述兩個參數的說明,可從幫助文檔得到注解:
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
簡單來講,就是如果打開UsePAM,則會根據ChallengeResponseAuthentication來決定是否使用挑戰應答方式(我不知道是否這樣翻譯)。而該方式是根據密碼判斷的,不能和密鑰登陸兼容,所以會出現報錯。
不同的配置,可從日志中得到完全不同的結果:
1、關閉ChallengeResponseAuthentication和打開UsePAM
使用密鑰登陸:
引用
Nov 19 10:57:20 printserver auth 10:57:20 sshd(pam_unix)[10322]: session opened for user root by root(uid=0)
Nov 19 10:57:20 printserver auth 10:57:20 sshd[10320]: Accepted publickey for root from 192.168.228.244 port 1595 ssh2
2、打開ChallengeResponseAuthentication和UsePAM
使用密鑰登陸就會報錯,而使用密碼登陸是正常的:
Nov 19 12:23:33 printserver sshd(pam_unix)[24454]: session opened for user root by root(uid=0)
四、其他
在Google的時候,發現有另外一種解決方法:點擊
就是修改/etc/pam.d/sshd,把下面這行注釋:
session required pam_loginuid.so
不過,我在系統中並沒有找到這行。反而,從日志可以看到,報錯是由PAM調用remote發出的,所以,我修改/etc/pam.d/remote,把這行注釋:
引用
session required pam_loginuid.so
這樣,確認不會再報上面的錯誤。但登陸的時候,日志就會顯示:
Nov 19 10:06:31 printserver sshd[9582]: Accepted publickey for root from 192.168.228.244
port 1228 ssh2
Nov 19 10:06:31 printserver remote(pam_unix)[9584]: session opened for user root by (uid=0)
Nov 19 10:06:31 login -- root[9584]: ROOT LOGIN ON pts/2 FROM 192.168.228.244
發出信息的主機從printserver改為login了,日志分類會有有錯,不利於使用咯。
◎至於因為核心沒有打開CONFIG_AUDIT功能引起的解決辦法
經確認,紅旗DC Server 5.0的核心是已經打開CONFIG_AUDIT的,所以,解決方法無效。