我有一台運行 Fedora 16 的家庭伺服器,我希望能夠透過 SSH 遠端存取。對於具有 sudo 存取權限的用戶,應該只允許他們使用金鑰從 WAN 進行連接,但我想允許他們使用本地網路的密碼進行連接。
這是我的 sshd_config:
#Logging
SyslogFacility AUTHPRIV
#Allow the two types of ssh groups
AllowGroups ssh_key_users ssh_pass_users
PermitRootLogin no
#Accept environment variables - these come from the fedora default config
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
#Other options
X11Forwarding yes
GSSAPICleanupCredentials yes
#Set up sftp subsytem
Subsystem sftp /usr/libexec/openssh/sftp-server
#Just as a default, we'll change it per network and group
PasswordAuthentication no
#Re-enable password access for the local network
Match Address 192.168.1.0/24 Group ssh_key_users
PasswordAuthentication yes
#Settings for users which can login by password (non-sudoers)
Match Group ssh_pass_users
PasswordAuthentication yes
ChrootDirectory %h
有趣的是,當我運行sshd -d -p 4000
將其置於調試模式並測試它時,它完美地工作,但是當我通過 systemctl 運行 sshd 時嘗試使用密碼登錄失敗。
正如配置這台機器時出現的大多數問題一樣,我相信 SELinux 是罪魁禍首。這是來自audit.log的錯誤訊息
type=USER_AUTH msg=audit(1345320824.824:123275):
pid=0 uid=0 auid=4294967295 ses=4294967295
subj=system_u:system_r:sshd_t:s0-s0:c0.c1023
msg='op=password acct="chockey" exe="/usr/sbin/sshd"
hostname=? addr=192.168.1.201 terminal=ssh res=failed'
如果我暫時關閉 SELinux,它確實可以工作。如果我對此訊息使用audit2why,它不會給出任何輸出。如果我嘗試對此訊息使用audit2allow,它會輸出 3 個換行符,但不會輸出任何其他內容。也許我用錯了,但這就是我所做的:
$ tail -n 1 /var/log/audit/audit.log > error.txt
$ audit2why -i error.txt
$ audit2allow -i error.txt
$
以前有人遇過這個嗎?是否值得保留 SELinux?