linux ssh只允许指定的用户登录
linux ssh只允许指定的用户登录的方法按大类分有两种,一种是通过pam模块配置,一种是通过sshd配置文件配置,通过pam来进行控制比较好一点,新建用户直接吧用户添加到文件,删除用户直接在文件里面增加。重启sshd就可以。
pam模块控制法
pam_access.so模块法
在/etc/pam.d/sshd文件中增加如下两行内容
1 | account required pam_nologin.so |
上面的配置表示在ssh认证中启用该模板,pam_access.so模块的具体工作行为根据配置文件/etc/security/access.conf来决定。该配置文件涉及到的几个字段意义如下:
- 第一个字段:权限(permission),使用“+”表示授予权限,用“-”表示禁止权限。
- 第二个字段:用户(user),定义了用户、组以及用“@”表示的在不同主机上的同名用户和同一主机上不同名用户。
- 第三个字段:访问发起方(origins),定义了发起访问的主机名称、域名称、终端名称。
pam_listfile.so模块
pam_listfile.so模块的功能和pam_access.so模块类似,目标也是实现基于用户/组,主机名/IP,终端的访问控制。不过它实现的方式和pam_access.so会稍微有些不同,因为它没有专门的默认配置文件。访问控制是靠pam配置文件中的控制选项和一个自定义的配置文件来实现的。而且除了针对上述访问源的控制之外,还能够控制到ruser,rhost,所属用户组和登录shell。所以有些用户认为它的功能似乎比pam_access.so更加灵活和强大一些。
使用pam_listfile.so模块配置的格式分为五个部分:分别是item、sense、file、onerr以及apply。 其中:
- item=[tty|user|rhost|ruser|group|shell]:定义了对哪些列出的目标或者条件采用规则,显然,这里可以指定多种不同的条件。
- onerr=succeed|fail:定义了当出现错误(比如无法打开配置文件)时的缺省返回值。
- sense=allow|deny:定义了当在配置文件中找到符合条件的项目时的控制方式。如果没有找到符合条件的项目,则一般验证都会通过。
- file=filename:用于指定配置文件的全路径名称。
- apply=user|@group:定义规则适用的用户类型(用户或者组)
配置/etc/pam.d/sshd
/etc/pam.d/sshd文件中增加如下内容
1 | cat /etc/pam.d/sshd |
添加可进行ssh的用户
在/etc/sshusers文件中增加如下内容,用户需要使用useradd
自行添加,是真是存在于系统中的。
1 | xxlaila |
表示只允许xxlaila、zhangsan两个人通过ssh登陆。也可以反其道而行之,指定不允许登陆的用户,相应用sshd文件就改为
1 | cat /etc/pam.d/sshd |
重启sshd
1 | systemctl restart sshd |
以组的方式进行控制
1 | cat /etc/pam.d/sshd |
增加组配置文件
在/etc/security/allow_groups文件中增加内容
1 | root |