linux ssh只允许指定的用户登录

linux ssh只允许指定的用户登录

linux ssh只允许指定的用户登录的方法按大类分有两种,一种是通过pam模块配置,一种是通过sshd配置文件配置,通过pam来进行控制比较好一点,新建用户直接吧用户添加到文件,删除用户直接在文件里面增加。重启sshd就可以。

pam模块控制法

pam_access.so模块法

在/etc/pam.d/sshd文件中增加如下两行内容

1
2
account    required     pam_nologin.so
account include password-auth

上面的配置表示在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
2
3
4
cat /etc/pam.d/sshd

#%PAM-1.0
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail

添加可进行ssh的用户

在/etc/sshusers文件中增加如下内容,用户需要使用useradd 自行添加,是真是存在于系统中的。

1
2
xxlaila
zhangsan

表示只允许xxlaila、zhangsan两个人通过ssh登陆。也可以反其道而行之,指定不允许登陆的用户,相应用sshd文件就改为

1
2
3
cat /etc/pam.d/sshd

auth required pam_listfile.so item=user sense=deny file=/etc/sshusers onerr=succeed

重启sshd

1
systemctl restart sshd

以组的方式进行控制

1
2
3
cat /etc/pam.d/sshd

auth required pam_listfile.so item=group sense=allow file=/etc/security/allow_groups onerr=fail

增加组配置文件

在/etc/security/allow_groups文件中增加内容

1
2
3
root
xxlaila
work
坚持原创技术分享,您的支持将鼓励我继续创作!
0%