编辑:非常感谢您提供详细的答案!由于某些原因,这在我的服务器上不起作用:
Match User !root
PasswordAuthentication no
PasswordAuthentication no
Match User root
PasswordAuthentication yes
替换
#1 楼
尝试在Match
中尝试sshd_config
:Match User user1,user2,user3,user4
PasswordAuthentication no
或按组:
Match Group users
PasswordAuthentication no
或,如评论中所述,取反:
Match User !root
PasswordAuthentication no
请注意,匹配有效,“直到另一匹配行或文件末尾。” (缩进并不重要)
评论
在这种情况下,首选Match用户!root
– 84104
2011年6月30日在16:41
太棒了,我对Match语法一无所知。但是,我提出的一个建议是,如果这是一台面向公众的服务器,那么我将根本不允许通过SSH进行root登录。如果是内部的话,可能不是什么大问题。
– Safado
2011年6月30日17:47
@SpacemanSpiff这就是a)强密码和b)denyhosts / fail2ban的用途。
–ceejayoz
2011年7月4日在19:56
@ deed02392如果愿意,您可以将密钥视为一个非常非常强大的密码。
–ceejayoz
13年7月5日在13:26
我要说的是,它要强得多,不在同一个球场内。 root用户也应禁用密码身份验证,并且仅允许登录使用密钥。
–deed02392
13年7月6日在11:49
#2 楼
Match
中的sshd_config
运作良好。如果您使用的是openssh 6.5p1或更高版本,则应使用Match all
结束匹配块。示例:PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all
评论
这对我没用...
– Dimitrios
19年5月23日在10:28
“全部匹配”成功了。谢谢。没有“全部匹配”,sshd无法启动。
– Vladimir Kondratyev
19-10-10在20:24
这在Ubuntu 20.04上不起作用。
–Ultima武器
20年6月16日在17:13
在放入/ etc / ssh / sshd_config而不是/etc/ssh/sshd_config.d之后,它现在可以工作。
–Ultima武器
20年6月16日在17:22
#3 楼
有几种方法可以执行此操作-首先,可以使用不同的配置在不同的端口上方便地运行第二个sshd守护程序-这有点麻烦,但是通过chroot的工作,它应该可以正常工作。 >此外,您可以允许密码身份验证,但可以锁定除一个用户以外的所有用户的密码
。密码已锁定的用户仍然可以
使用公钥进行身份验证。
#4 楼
您可以简单地转到/ etc / ssh / sshd_config文件并添加一行-> AllowUsers user1
拒绝---> DenyUsers user2
我们可以允许/ deny使用/ etc文件夹中的hosts.allow或hosts.deny文件登录特定的一组主机
#5 楼
出于安全原因,您可能需要阻止某些用户对Linux机器的SSH访问。编辑sshd_config文件,该位置有时会有所不同,具体取决于Linux发行版,但通常在/ etc /中ssh /。
以root用户身份登录时打开文件:
# vi /etc/ssh/sshd_config
在配置文件的末尾插入一行:-
DenyUsers username1 username2 username3 username4
保存并重新启动SSH服务。基本上,用户名1,用户名2,用户名3和用户名4不允许SSH登录。
运行以下命令以重新启动该命令:完成了。请从该用户处获取ssh,您将得到错误“访问被拒绝”
评论
问题是关于禁用密码登录(但使用密钥身份验证保留登录)。
–杰拉德·施耐德(Gerald Schneider)
19年5月7日在6:57
评论
也许是因为您的缩进?值得一提的是,匹配项下的那些行应位于文件末尾
!root对我也不起作用。第二种方法成功了。
我见过匹配用户“!root,*”完成此任务的情况。