SSH登录主机慢排查步骤

连接现象

      通过XShell客户端能够与该服务器建立ssh连接,但是建立连接过程比较慢,耗时1分钟左右,而且连接成功后发现该服务器比较卡
      首先使用重启后,XShell连接该服务器依然缓慢,但是连接成功后,服务器不再卡顿

修改sshd配置

      vi /etc/ssh/sshd_config
      修改sshd_config,设置UseDNS为no
      修改sshd_config,设置UsePAM为no

PAM认证

         查看ssh的PAM设置

         当注销掉/etc/pam.d/sshd中以下内容后,ssh登录慢的问题可以解决

          

password-auth的PAM配置

       cat /etc/pam.d/password-auth

     

 原因分析

     pam_systemd 将用户会话注册到 systemd 登录管理器(也就是 systemd-logind.service(8) 服务)中, 因此也同时注册到了 systemd 控制组(control group)之中
     在登录(login)时,此模块与 systemd-logind.service 服务一起, 确保实现如下功能:
     如果用户运行时目录(/run/user/$UID)不存在, 那么就创建该目录或者以"tmpfs"文件系统挂载该目录, 同时根据登录用户为该目录设置磁盘配额、属主与属组。
     设置 $XDG_SESSION_ID 环境变量的值。 如果开启了审计并且 pam_loginuid.so 运行在此模块之前(强烈建议这么做), 那么将使用审计会话ID(/proc/self/sessionid)的值, 否则将使用独立的会话计数器的值。
     为会话创建一个新的 scope 单元。如果此会话是该用户多个并行会话中第一个建立的会话, 那么将会在 user.slice 之下自动创建一个针对该用户的 slice 单元,并将新建的 scope 单元置于其中。 按照会话用户的身份启动一个 user@.service 系统服务实例 (也就是运行一个 systemd 用户实例)。
      在退出(logout)时,此模块确保实现如下功能:
      如果在 logind.conf(5) 中设置了 KillUserProcesses=yes (无论明确还是隐含), 那么将会杀死会话中的所有进程。如果此会话是该用户多个并行会话中最后一个退出的会话, 那么还会同时终止该用户的systemd用户实例以及slice单元
      如果此会话是该用户多个并行会话中最后一个退出的会话, 那么将会删除该用户的运行时目录(/run/user/$UID) 以及其中的所有内容

      所以ssh登录缓慢的原因的原因在于:
      systemd-logind.service
      systemd-logind 是一个管理用户登录的系统服务

      持续跟踪用户的会话、进程、空闲状态。 这将在 user.slice 之下,为每个用户分配一个 slice 单元、为每个用户的当前会话分配一个 scope 单元。 同时,针对每个已登录的用户,将会启动一个专属的服务管理器(作为 user@.service 模版的一个实例)。
      生成并管理"session ID"。如果启用了审计并且已经为一个会话设置了审计"session ID", 那么该ID也将同时被用作"session ID", 否则将会使用一个独立的会话计数器(也就是独立生成一个"session ID")。
      为用户的特权操作(例如关闭或休眠系统) 提供基于 polkit 的认证与授权
      为应用程序实现 阻止关闭/休眠系统的逻辑
      处理 硬件关机/休眠按钮的动作
     多席位(Multi-Seat)管理
     会话切换管理
     管理用户对设备的访问
     在启动虚拟终端时 自动启动文本登录程序(agetty), 并管理用户的运行时目录
     用户会话是通过 pam_systemd(8) PAM 模块 在 logind 中注册的

解决步骤

        systemctl restart systemd-logind.service

        一切恢复正常,ssh登录秒连,su操作秒切用户

       

新装系统无法远程SSH远程登录 

        Failed password for root from x.x.x.x portxxxx ssh2

       各种配置文件中的权限设置都没有禁止root登录,防火墙也没开

       新安装的arch只有一个root用户,使用root用户来进行日常系统管理是很危险的事情。
       所以Linux中为了更进一步加强系统的安全性,需要自己添加用户到管理员到“wheel”组。
       这时候添加一个用户到wheel组就可以使用它登录了

          

       useradd -m -G wheel -s /bin/bash admin
       passwd admin

       

posted @ 2022-08-13 10:57  不懂123  阅读(736)  评论(0编辑  收藏  举报