環境中啓用兩個sshd,一個監聽22223埠,一個監聽33332埠,監聽22223埠的組態檔放在/etc/sshd/sshd_config(爲安裝sshd後預設設定),監聽33332埠的組態檔放在/opt/data/luban/luban_c/build/luban_sshd_config(自定義設定),設定22223的sshd開機不自啓,發現33332的sshd啓動不起來
sshd啓動時設定了許可權分離目錄,一般是在sshd安裝時就指定了,可以通過/etc/passwd檢視
centos系統爲/var/empty/sshd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
uos系統/run/sshd
sshd:x:110:65534::/run/sshd:/usr/sbin/nologin
kylin系統/var/run/sshd
sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin
問題主要出現在uos和kylin系統上,因爲系統重新啓動之後/run和/var/run目錄下的檔案會被清除掉
而在uos和kylin系統上系統安裝的sshd(監聽22223埠)會自動建立/run/sshd或者/var/run/sshd目錄,可檢視這兩個系統上的/etc/init.d/ssh,而我們自己寫的/etc/init.d/luban-sshd是沒有這個操作的
check_privsep_dir() {
# Create the PrivSep empty dir if necessary
if [ ! -d /run/sshd ]; then
mkdir /run/sshd
chmod 0755 /run/sshd
fi
}
在我們自定義的指令碼luban-sshd啓動指令碼中增加建立目錄的操作,由於系統不一樣,目錄會不一樣,因此要動態獲取
privsep_dir=$(grep "^sshd" /etc/passwd | awk -F":" '{print $6}')
if [ ! -d $privsep_dir ];then
mkdir -p $privsep_dir
chmod 755 $privsep_dir
fi