【服务器管理】禁止指定用户使用密码登录服务器
前言
登录服务器通常会采用“用户名-密码”和“ssh密钥”这两种方案中的一种,而在调研到的大多数观点中,都认为密钥比密码更加安全。
在管理服务器时,强制服务器用户均使用密钥登录应该是更为安全的一种管理方案。
但这种方案在已经有大量用户使用了密码登录,或是大多数用户不熟悉密钥登录的情形下会比较难以实施。
退一步来说,可以仅限制服务器上的特定用户(如管理员用户)或具有特定权限的用户(如sudo用户)使用密钥登录,另大多数普通用户自行选择自己的登录方案,从而减少管理过程中和人员打交道时的麻烦。
任务:禁止指定用户使用密码登录服务器
在ssh中,可以通过在配置文件/etc/ssh/sshd_config
中添加Match
实现对于指定用户的过滤,
另一方面,可以通过修改配置文件中的PassworAuthentication
选项实现禁用/启用密码登录。
根据需求不同,可以作以下两种修改↓
-
禁止指定用户使用密码登录
在配置文件末尾添加Match User [用户名,如果想取非可在用户名前面加!] PassworAuthentication no
-
禁止指定用户组内的用户使用密码登录
在配置文件末尾添加Match Group [用户组] PassworAuthentication no
完成修改后执行sudo systemctl reload ssh
即可。
特别注意
配置文件中有提到对于PassworAuthentication
选项的修改,具体写法为:
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
在这个位置进行修改只能选择允许/禁止全部用户使用密码登录,即只能够保持原文不动,或者修改为:
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no
如果在这里添加Match
之类的,执行sudo systemctl reload ssh
时会报错。
想要进行按照上面提到的修改方式进行正确修改,必须要在配置文件末尾进行。