ssh 服务器收到请求时执行的任务?

ssh 服务器收到请求时执行的任务?

当我使用 ssh 进入服务器时

ssh -vvv user@ip

client它向我提供了有关连接到 OpenSSH 服务器所执行的特定步骤的所有信息。

我想知道是否有办法知道server(sshd 守护进程)在请求client建立连接时将执行的所有类似步骤?

答案1

如果您只是需要暂时执行此操作(例如,调试特定问题),则可以sshd使用设置调试标志以交互方式运行。

  1. 登录服务器并成为 root 用户。
  2. 停止常规 SSH 守护进程。
  3. 在设置调试标志的情况下以交互方式运行 sshd:

    /usr/sbin/sshd -d

  4. 运行客户端并执行您要排除故障的测试。

sshd将在您的终端前台运行并输出调试信息。

如果你不想停止正常的 ssh 服务器,你可以在不同的端口上运行调试服务器:

/usr/sbin/sshd -d -p 10022

然后让您的客户端连接到备用端口。

答案2

修改日志文件(通常/etc/sshd/配置) 以使 sshd 具有尽可能详细的日志记录。具体情况可能有所不同,但 DEBUG3 可能是最高的。正如手册页所述:

 LogLevel
     Gives the verbosity level that is used when logging messages from
     sshd.  The possible values are: QUIET, FATAL, ERROR, INFO, VER-
     BOSE, DEBUG, DEBUG1, DEBUG2 and DEBUG3.  The default is INFO.
     DEBUG and DEBUG1 are equivalent.  DEBUG2 and DEBUG3 each specify
     higher levels of debugging output.  Logging with a DEBUG level
     violates the privacy of users and is not recommended.

相关内容