看来/etc/ssh/sshd_config
SSH 守护进程没有发现对我的文件所做的修改。出于测试目的,我添加了DenyUsers *
,执行了service ssh restart
,甚至重启了整个系统。但我仍然可以从远程 ssh 。
我如何检查文件是否/etc/ssh/sshd_config
已被读取sshd
?
答案1
如果我不确定某个程序是否读取了特定的配置文件(或读取顺序),我会尝试使用 来跟踪打开的系统调用strace
。为此,请停止 ssh 守护程序。然后通过以下方式在终端中手动启动它:
strace -e open -ostrace.out /usr/sbin/sshd
启动后,当前工作目录中应该有一个名为的文件strace.out
。在我的情况下,它看起来像这样(输出已精简):
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
...
many libraries
...
open("/proc/filesystems", O_RDONLY) = 3
open("/dev/null", O_RDWR) = 3
open("/usr/lib/ssl/openssl.cnf", O_RDONLY) = 3
open("/etc/ssh/sshd_config", O_RDONLY) = 3 <--- here sshd_config was opened
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 3
open("/etc/gai.conf", O_RDONLY|O_CLOEXEC) = 3
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
...
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
...
ssh keys
...
open("/etc/ssh/blacklist.ECDSA-256", O_RDONLY) = -1 ENOENT (No such file or directory)
通过这个测试,我可以确保sshd
读取我的/etc/ssh/sshd_config
。在最后一项中,您可以看到我的系统上找不到此文件(-1)。