“/etc/ssh/sshd_config”总是被其他进程修改

“/etc/ssh/sshd_config”总是被其他进程修改

我对sshd进程不熟悉;我正在尝试启用无需密码的远程 ssh 登录,并且我已将我的公钥插入到服务器端的 ~/.ssh/authorized_keys 中,并且它适用于其中一个远程系统,而不是另一个。

我注意到非工作远程系统上的 /etc/ssh/sshd_config 中有以下条目,

#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile /var/ssh/%u/ak

由于我已将公钥插入 .ssh/authorized_keys 中,因此我尝试将上面的内容更改为

AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile /var/ssh/%u/ak

这似乎允许我在没有密码的情况下远程 ssh,但是,我注意到该文件每隔几个小时就会重置一次,我必须再次输入 SSH 密码。

知道这里的配置文件发生了什么吗?

谢谢!

答案1

  • 你可以使用工具实现fanotify()内核 API。例如fanotify-cmd工作完美。无需编辑任何系统文件或解析日志。

    ./fm -a /etc/passwd
    checking for events FAN_ACCESS
    mask: FAN_ACCESS, fd: 4, pid: 203188, file: /etc/passwd, command: bash 
    mask: FAN_ACCESS, fd: 4, pid: 203190, file: /etc/passwd, command: 
    mask: FAN_ACCESS, fd: 4, pid: 203321, file: /etc/passwd, command: ls --color=auto -l /etc/passwd
    

    Ubuntu 和 Fedora 都包含fatrace一个非常好的维护良好的实用程序。

    sudo fatrace --timestamp --filter=WD
    
  • 或者你可以使用auditd.由于它是一个系统守护进程,因此您需要编辑一个 .auditd 系统配置文件/etc。网上有很多如何使用它们的手册,例如堆栈交换本身

    inotifywait不幸的是,它不适用于此用例,因为它仅显示正在访问或修改的文件,而没有显示执行该操作的进程。

相关内容