• openssh源码分析笔记


    1、客户端保活:
    options.client_alive_interval
    options.client_alive_count_max
    在wait_until_can_do_something()函数中实现

    2、主进程监听客户端连接请求

     main()

     server_accept_loop()

    3、接受客户端连接请求后协商:

      1)版本号协商:

      main

      sshd_exchange_identification

      2)算法密钥协商:

      main

      do_ssh2_kex

      3)用户名密码验证:  

      main 

      do_authentication2
      input_service_request
      input_service_request
      authmethod_lookup
      authmethod_lookup中遍历全局变量 authmethods
      authmethods->method_passwd
      method_passwd->userauth_passwd
      userauth_passwd
      auth_password
      sys_auth_passwd

    4、验证通过后shell启动流程

    main()

    do_authenticated

    do_authenticated2

    server_loop2


    debug1: server_init_dispatch
    debug1: server_input_channel_open: ctype session rchan 0 win 131072 max 32768
    debug1: input_session_request
    debug1: channel 0: new [server-session]
    debug1: session_new: session 0
    debug1: session_open: channel 0
    debug1: session_open: session 0: link with channel 0
    debug1: server_input_channel_open: confirm session
    debug1: server_input_channel_req: channel 0 request pty-req reply 1
    debug1: session_by_channel: session 0 channel 0
    debug1: session_input_channel_req: session 0 req pty-req
    debug1: Allocating pty.
    debug1: session_pty_req: session 0 alloc /dev/pts/4
    debug1: server_input_channel_req: channel 0 request shell reply 1
    debug1: session_by_channel: session 0 channel 0
    debug1: session_input_channel_req: session 0 req shell
    Starting session: shell on pts/4 for root from 10.1.5.200 port 54717 id 0


    session_input_channel_req

    session_shell_req

    do_exec

    do_exec_pty

    do_child

    execve()


    5、启动shell过程会写入 /var/run/utmp文件(linux通过w或who命令查看登录用户就是读取的该文件)

    do_exec_pty

    do_login

    record_login

    login_login

    login_write 

    utm_write_entry

      utmp_perform_logout

      utmp_perform_login  

        utmp_write_library

          pututline

  • 相关阅读:
    python切片操作
    python中的内存管理
    python中x,y交换值的问题
    leetcode6:Zigzag Conversion@Python
    Leetcode4:Median of Two Sorted Arrays@Python
    Leetcode3:Longest Substring Without Repeating Characters@Python
    Leetcode2:Add Two Numbers@Python
    LeetCode344:Reverse String@Python
    支付宝 芝麻信用分过600,你不知道的八个特权
    穷爸爸富爸爸里面说的“现金流游戏”靠谱吗?
  • 原文地址:https://www.cnblogs.com/wangliangblog/p/8677619.html
Copyright © 2020-2023  润新知