虚拟机安装了ubuntu22.04, 配置了使用密钥登录同时禁用了密码登录,在测试时,密钥登录成功,但仍然可以使用密码登录,查看配置 /etc/ssh/sshd_config 的配置为
# sudo cat /etc/ssh/sshd_config | grep PasswordAuthentication | grep -v ^#
PasswordAuthentication no
查看ssh配置发现可能引入了其他配置文件,在 /etc/ssh/sshd_config.d目录下有一个50-cloud-init.conf配置文件,内容为:
# cat /etc/ssh/sshd_config | grep Include
Include /etc/ssh/sshd_config.d/*.conf
# sudo cat /etc/ssh/sshd_config.d/50-cloud-init.conf
PasswordAuthentication yes
修改/etc/ssh/sshd_config.d/50-cloud-init.conf文件并重启ssh服务,测试生效
PasswordAuthentication no
在Linux系统中,SSH的配置信息通常存储在一个或多个配置文件中。主要的配置文件是/etc/ssh/sshd_config
和~/.ssh/config
。sshd_config
是SSH服务器的配置文件,而~/.ssh/config
则是SSH客户端的配置文件。
在多个SSH配置文件中,当存在相同的配置项时,系统将按照特定的顺序决定哪个配置项生效。下面是SSH配置文件的优先级顺序:
全局配置文件: 全局配置文件位于
/etc/ssh/ssh_config
。这个文件包含了系统范围内所有SSH客户端连接的默认配置,它可以引用其他配置文件。自定义的配置文件: ubuntu中SSH服务器的自定义配置文件位于
/etc/ssh/sshd_config.d
目录。
自定义配置文件会覆盖全局配置文件的设置,在上面的示例中,虽然在全局配置文件中禁用了密码登录,但是在自定义文件中启用了密码登录,所以还是可以使用密码登录服务器。如果要禁用密码登录,需要在自定义配置文件中设置为no.所在在配置ssh是需要检查全局配置文件引入的配置文件
评论区