在设置家庭服务器(运行 Kubuntu 10.04)时,我创建了一个admin
用户来执行可能需要卸载主目录的管理任务。此用户在主机的根分区上有一个主目录。
该机器有一个面向互联网的 SSH 服务器,并且我已经限制了可以通过 SSH 连接的用户集,但我想通过admin
仅从我的笔记本电脑(或者可能只能从本地 192.168.1.0/24 范围)访问来进一步限制它。
我目前只有一个
AllowGroups ssh-users
我自己和admin
小组成员ssh-users
。
我想要的是像您期望的那样工作的东西(但它不能):
$ groups jonathan
... ssh-users
$ groups admin
... ssh-restricted-users
$ cat /etc/ssh/sshd_config
...
AllowGroups ssh-users [email protected].*
...
有办法吗?我也试过这个,但是没有用(admin
仍然可以远程登录):
AllowUsers [email protected].* *
AllowGroups ssh-users
与admin
的一名成员ssh-users
。
我也可以只允许admin
使用密钥登录,而不允许密码登录,但我找不到常规设置sshd
;有一个设置要求root
使用密钥登录,但不适用于一般用户。
答案1
标准pam_access.so
PAM模块可以限制通过远程地址的登录,并且可以应用于所有服务,而不仅仅是ssh
。
答案2
一个解决方案是创建一个 ssh 密钥,当连接来自一个 IP 地址或一个域或子域时,该密钥将受到主机的限制,只可接受:
正常创建密钥……类似于:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
然后编辑生成的 id_rsa.pub 文件(您可以选择不同的基本文件名),其内容如下:
ssh-rsa AA.....
编辑文件如下:
from="*.wangadingding.com" ssh-rsa AA....
将 .pub 文件添加到目标计算机上的 ~/.ssh/authorized_keys2(或创建它)
现在,使用该密钥的任何人(大概是“管理员”)只能从指定的域使用它。
答案3
Match
使用中的指令应该可以实现sshd_config
。为了防止admin
在本地网络之外登录,应该使用如下方法:
Match User="admin",Host="!192.168.1.0/24"
MaxAuthTries 0 # a hack — is there a better way?
要为用户禁用 ssh 的内置密码验证(如果我理解正确的话,您不能通过这种方式调整 PAM 验证,只能调整 sshd 的内置密码验证):
Match User="admin"
KbdInteractiveAuthentication No