在特定于用户的 ssh 配置中限制主机

在特定于用户的 ssh 配置中限制主机

我正在尝试在 (user_home)/.ssh/ 中创建一个新的配置文件,并设置一些规则,这些规则将限制系统上只有一个用户的登录,而无需更改当前的 /etc/ssh/sshd_conf 文件或使用用户公钥中的“from=""”行。我能够通过阻止在 DNS 上具有已注册主机名的系统的登录来使其工作,但我注意到,我正在测试的一个系统具有 IP 但不在 DNS 中,但仍然能够使用公钥登录。

我是否遗漏了什么,我只能在用户 ssh 配置中允许一个主机名和/或 IP,以阻止该用户尝试从用户 ssh 配置中指定的主机名和/或 IP 以外的其他位置登录?

我希望有人能指出我可能遗漏了什么。这是当前配置(经过多次尝试后):

Host (hostname)
        HostName (hostname)*
        ForwardAgent no
        ForwardX11 no
        ForwardX11Trusted no
        Port 1472
        Protocol 2
        ServerAliveInterval 60
        ServerAliveCountMax 30
        PasswordAuthentication no
        PubkeyAuthentication yes
        AllowUsers (user)
Host *
        HostName !(hostname)*
        AddressFamily any
        PasswordAuthentication no
        PubkeyAuthentication no
        DenyUsers *

答案1

我正在尝试在 ~/.ssh/ 中创建一个新的配置文件,并设置一些规则,这些规则将覆盖默认系统规则并仅限于系统上一个用户的登录。

据我所知, ~/.ssh/config您正在设置 ssh 客户端的选项和限制,虽然这些选项和限制通常非常有用,但并不是服务器强制执行的限制。
~/.ssh/config配置文件仅控制该用户的 ssh 客户端的行为方式,然后才控制所建立的连接该系统(不是该系统)并且只要客户端不忽略它们,例如ssh -F /dev/null ...

要设置服务器上强制执行的限制,使用户无法规避或忽略,需要在 中设置它们/etc/ssh/sshd_config。您可以使用 覆盖默认值,并放宽或限制特定连接的限制Match堵塞:

# /etc/ssh/sshd_config
#here go defaults for all connections/users
PasswordAuthentication no
PubkeyAuthentication no
...
# Use Match directives to override default settings and specify specific settings
# for users, groups, hosts 
# https://man.openbsd.org/sshd_config#Match
Match User hbruijn
    PubkeyAuthentication yes

Match Address 192.0.2.1 
    PasswordAuthentication yes
    PubkeyAuthentication yes

答案2

AllowUsers您可以在表单中的选项中指定允许的 ssh 客户端 ip 地址username@ip。此表单还支持地址部分(@符号后)的通配符。

相关内容