我在哪里可以检查/验证 sshd 正在使用哪个配置文件?我知道您可以使用命令更改要使用的配置文件-f
,但是有没有办法回显当前正在使用的配置文件,或者是否有一个文件我可以查看来检查这一点?
答案1
基于@Hauke Laging 的评论。当您运行二进制strace
文件时sshd
,它会输出有关程序如何启动以及它尝试访问哪些文件的调试信息。我们可以从中grep
列出它尝试访问的 /etc/ 文件。
$ sudo strace -e trace=file /usr/sbin/sshd |& grep '^open('|grep '/etc/'
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/etc/ssh/sshd_config", O_RDONLY|O_LARGEFILE) = 3
open("/etc/gai.conf", O_RDONLY) = 3
open("/etc/nsswitch.conf", O_RDONLY) = 3
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
open("/etc/ssh/ssh_host_rsa_key", O_RDONLY|O_LARGEFILE) = 3
open("/etc/ssh/blacklist.RSA-2048", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/etc/ssh/ssh_host_dsa_key", O_RDONLY|O_LARGEFILE) = 3
open("/etc/ssh/blacklist.DSA-1024", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/etc/ssh/ssh_host_ecdsa_key", O_RDONLY|O_LARGEFILE) = 3
open("/etc/ssh/blacklist.ECDSA-256", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
上面的strace
输出/etc/ssh/sshd_config
用作ssh
配置。
答案2
除了给出的答案之外:
- 调试模式可能会有所帮助:
[root@ip-10-41-162-92 ~]# /usr/sbin/sshd -df /etc/ssh/sshd_config.test debug1: sshd version OpenSSH_6.7, OpenSSL 1.0.1j 15 Oct 2014 ... debug1: rexec_argv[0]='/usr/sbin/sshd' debug1: rexec_argv[1]='-df' debug1: rexec_argv[2]='/etc/ssh/sshd_config.test' ...
输出告诉我们使用了什么文件(如果给出了 -f 标志)。
- 非常明显,但如果您正在调试配置,请记住运行 sshd 时 stderr 会打印到 /var/log/messages,因此会出现诸如
/etc/ssh/sshd_config line 91: Unsupported option GSSAPIAuthentication /etc/ssh/sshd_config line 93: Unsupported option GSSAPICleanupCredentials
告诉您正在使用哪个文件之类的错误