我正在尝试在 (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
。此表单还支持地址部分(@
符号后)的通配符。