限制 SSH 用户只能从一台机器连接

限制 SSH 用户只能从一台机器连接

在设置家庭服务器(运行 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.soPAM模块可以限制通过远程地址的登录,并且可以应用于所有服务,而不仅仅是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

相关内容