这里的目标是创build一个脚本来轻松pipe理机器的预留。 当用户预约机器时,它应该是唯一能够在给定时间访问机器的人(当然除了pipe理员)。
我已经find了PAM的解决scheme。 /etc/pam.d/sshd这一行将解决我的问题:
auth required pam_listfile.so item=user sense=allow file=/etc/ssh/sshd.allow onerr=fail
用户login/etc/ssh/sshd.allow
但它根本不起作用:
$ cat /etc/ssh/sshd.allow foo $ tail -f /var/log/auth.log Dec 1 12:12:05 mini sshd[2697]: Accepted publickey for bar from 192.168.0.11 port 58087 ssh2 Dec 1 12:12:05 mini sshd[2697]: pam_unix(sshd:session): session opened for user bar by (uid=0)
这里是/etc/pam.d/sshd文件
# PAM configuration for the Secure Shell service auth required pam_env.so # [1] auth required pam_env.so envfile=/etc/default/locale auth required pam_listfile.so item=user sense=allow file=/etc/ssh/sshd.allow onerr=fail @include common-auth account required pam_nologin.so @include common-account @include common-session session optional pam_motd.so # [1] session optional pam_mail.so standard noenv # [1] session required pam_limits.so @include common-password
我正在运行Debian Squeeze框,我不知道PAM的行为是否与此不同。
与上面类似的想法:你可以使用sshd.conf中的AllowGroups来允许一个特定的组(+为pipe理员组),然后使用你的authentication系统从组中添加和删除用户,防止你根本不必编辑文件,或者至less只能编辑具有良好接口的文件(通过usermod等/ etc / group)。
为什么你没有在AllowUsers user1 user2 user3的/ etc / ssh / sshd_config中使用
你可以很容易地使用这个pam_access:
# /etc/pam.d/system-auth account required pam_access.so
然后控制谁有权访问如下:
# /etc/security/access.conf + : root otheruser : ALL - : ALL : ALL