openssh sshd 使用哪个配置文件?

openssh sshd 使用哪个配置文件?

我在哪里可以检查/验证 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

除了给出的答案之外:

  1. 调试模式可能会有所帮助: [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 标志)。

  1. 非常明显,但如果您正在调试配置,请记住运行 sshd 时 stderr 会打印到 /var/log/messages,因此会出现诸如
    /etc/ssh/sshd_config line 91: Unsupported option GSSAPIAuthentication /etc/ssh/sshd_config line 93: Unsupported option GSSAPICleanupCredentials 告诉您正在使用哪个文件之类的错误

相关内容