美文网首页
sshd_config

sshd_config

作者: 申申申申申 | 来源:发表于2017-11-18 00:01 被阅读146次

    整理一份 sshd_config 说明

    [root@shenfeng ssh]# ssh -V
    OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
    

    路径:/etc/ssh/sshd_config
    配置后需要重启服务
    完整配置如下:

      1 #       $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $
      2 
      3 # This is the sshd server system-wide configuration file.  See
      4 # sshd_config(5) for more information.
      5 
      6 # This sshd was compiled with PATH=/usr/local/bin:/usr/bin
      7 
      8 # The strategy used for options in the default sshd_config shipped with
      9 # OpenSSH is to specify options with their default value where
     10 # possible, but leave them commented.  Uncommented options override the
     11 # default value.
     12 
    

    ssh 默认使用 Port 22,也可以使用多个 Port,如果需要使用多个 Port 另起一行 Port 443即可,然后重启 sshd

     13 # If you want to change the port on a SELinux system, you have to tell
     14 # SELinux about this change.
     15 # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
     16 #
     17 #Port 22
    

    监听 ip
    eg:有两个 IP,分别是 192.168.1.123 及 192.168.2.123,假设只想要让 192.168.1.123 可以监听 sshd ,ListenAddress 192.168.1.100
    默认值是监听所有接口的 ssh 请求

     18 #ListenAddress 0.0.0.0
     19 #ListenAddress ::
     20 
    

    ssh 的协议版本,如果需要支持旧版: Protocol 2,1

     21 # The default requires explicit activation of protocol 1
     22 #Protocol 2
     23 
    

    私钥存放的位置

     24 # HostKey for protocol version 1
     25 #HostKey /etc/ssh/ssh_host_key
     26 # HostKeys for protocol version 2
     27 HostKey /etc/ssh/ssh_host_rsa_key
     28 #HostKey /etc/ssh/ssh_host_dsa_key
     29 HostKey /etc/ssh/ssh_host_ecdsa_key
     30 HostKey /etc/ssh/ssh_host_ed25519_key
     31 
    

    在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成
    这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失
    设为 0 表示永不重新生成,默认为 3600(秒)

     32 # Lifetime and size of ephemeral version 1 server key
     33 #KeyRegenerationInterval 1h
    

    指定临时服务器密钥的长度,仅用于SSH-1

     34 #ServerKeyBits 1024
     35 
    
     36 # Ciphers and keying
     37 #RekeyLimit default none
     38 
    

    登录记录的等级

     39 # Logging
     40 # obsoletes QuietMode and FascistLogging
     41 #LogLevel INFO
     42 
    

    当使用者连接到 ssh server 后 会提示输入密码,在这个时候,在设置值内没有成功连上 ssh server 时候就会自动断线,如果没有单位 默认为 s

     43 # Authentication:
     44 
     45 #LoginGraceTime 2m
    

    是否让 sshd 去检查 用户家目录 或 相关档案 的权限
    如果使用者将某些重要档案的权限设错 可能会导致一些问题
    eg:使用者的~.ssh/ 权限设错时 某些特殊情况下会不许用户登入

     46 #StrictModes yes
    

    指定每个连接最大允许的认证次数,默认值是 6
    如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息

     47 #MaxAuthTries 6
    

    限制同时登录的数量

     48 #MaxSessions 10
     49 
    

    是否允许使用纯 RSA 公钥认证,仅用于SSH-1

     50 #RSAAuthentication yes
    

    是否允许用户自行使用成对的密钥进行登入系统行为 仅针对 version 2
    自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys

     51 #PubkeyAuthentication yes
     52 
     53 # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
     54 # but this is overridden so installations will only check .ssh/authorized_keys
     55 AuthorizedKeysFile      .ssh/authorized_keys
     56 
    
     57 #AuthorizedPrincipalsFile none
     58 
    

    是否允许authorized_keys中使用command项

     59 #AuthorizedKeysCommand none
    

    限制能够在authorized_keys中使用command项的用户

     60 #AuthorizedKeysCommandUser nobody
     61 
    

    这个选项是专门给 version 1 用的 使用 rhosts 档案在 /etc/hosts.equiv
    配合 RSA 演算方式来进行认证
    no

     62 # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
     63 #RhostsRSAAuthentication no
    

    是否允许 host_based 验证,no

     64 # similar for protocol version 2
     65 #HostbasedAuthentication no
    

    是否忽略家目录内的 ~/.ssh/known_hosts 这个档案所记录的主机内容
    no

     66 # Change to yes if you don't trust ~/.ssh/known_hosts for
     67 # RhostsRSAAuthentication and HostbasedAuthentication
     68 #IgnoreUserKnownHosts no
    

    是否取消使用 ~/.ssh/.rhosts 来做为认证 yes

     69 # Don't read the user's ~/.rhosts and ~/.shosts files
     70 #IgnoreRhosts yes
     71 
    

    是否允许空密码登录 no

     72 # To disable tunneled clear text passwords, change to no here!
     73 #PermitEmptyPasswords no
     74 
    

    允许任何的密码认证,所以,任何 login.conf 规定的认证方式,均可适用
    但目前通常使用 PAM 模块帮忙管理认证,因此这个选项可以设定为 no

     75 # Change to no to disable s/key passwords
     76 #ChallengeResponseAuthentication yes
     77 ChallengeResponseAuthentication no
     78 
    

    Kerberos 是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。Kerberos的扩展产品也使用公开密钥加密方法进行认证。
    要使用Kerberos认证,服务器需要一个可以校验 KDC identity 的 Kerberos servtab
    (三头地狱犬)

     79 # Kerberos options
     80 #KerberosAuthentication no # 是否允许使用基于 Kerberos的用户认证
     81 #KerberosOrLocalPasswd yes # 如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)
     82 #KerberosTicketCleanup yes # 是否在用户退出登录后自动销毁用户的 ticket
     83 #KerberosGetAFSToken no # 如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个 AFS token
     84 #KerberosUseKuserok yes
     85 
    
     86 # GSSAPI options
     87 GSSAPIAuthentication yes # 是否允许使用基于 GSSAPI 的用户认证。默认值为”no”。仅用于SSH-2。
     88 GSSAPICleanupCredentials no # 是否在用户退出登录后自动销毁用户凭证缓存
     89 #GSSAPIStrictAcceptorCheck yes # 是否对接收到的用户凭证严格校验
     90 #GSSAPIKeyExchange no # 是否开启密钥交换
     91 #GSSAPIEnablek5users no
     92 
    

    利用 PAM 管理使用者认证,可以记录与管理等
    UsePAM yes && ChallengeResponseAuthentication no

     93 # Set this to 'yes' to enable PAM authentication, account processing,
     94 # and session processing. If this is enabled, PAM authentication will
     95 # be allowed through the ChallengeResponseAuthentication and
     96 # PAM authentication via ChallengeResponseAuthentication may bypass
     97 # If you just want the PAM account and session checks to run without
     98 # and ChallengeResponseAuthentication to 'no'.
     99 # WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
    100 # problems.
    101 UsePAM yes
    102 
    
    103 #AllowAgentForwarding yes
    104 #AllowTcpForwarding yes # 允许TCP转发
    105 #GatewayPorts no # 转发路径端口
    

    X11Forwarding 项目 可以让窗口的数据透过 ssh 通道来传送

    106 X11Forwarding yes # 是否开启X11转发
    107 #X11DisplayOffset 10 # 设置转发的可显示区数字为10
    108 #X11UseLocalhost yes # 是否将X11的转发服务器地址保存到loopback地址
    
    109 #PermitTTY yes
    

    登入后是否显示出一些信息 预设是 yes
    eg:上次登入的时间、地点等等
    即输出 /etc/motd 这个档案的内容
    出于安全考虑 可改为 no

    110 #PrintMotd yes
    

    显示上次登入的时间

    111 #PrintLastLog yes
    

    当成功登入后,服务器会一直传送 TCP 封包给客户端以判断对方是否一直存在联机。
    不过,如果联机时中间的路由器暂时停止服务几秒钟,也会让联机中断
    在这种情况下,任何一端死掉后,SSH可以立刻知道,而不会有僵尸程序的发生
    但如果你的网络或路由器常常不稳定,那么可以设定为 no

    112 #TCPKeepAlive yes
    

    是否在交互式登录时启用login

    113 #UseLogin no
    

    是否让 sshd 通过创建非特权子进程处理接入请求的方法来进行权限分离 默认值是 yes
    认证成功后,将以该认证用户的身份创建另一个子进程。
    这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全
    eg:sshd 启动在 port 22 ,因此启动的程序是属于 root 的身份。那么当 student 登入后,这个设定值会让 sshd 产生一个属于 sutdent 的 sshd 程序来使用,对系统较安全

    114 UsePrivilegeSeparation sandbox          # Default for new installations.
    
    115 #PermitUserEnvironment no
    

    指定何时开始使用压缩数据模式进行传输,选项 yes no delayed(登录后将数据压缩)

    116 #Compression delayed
    
    117 #ClientAliveInterval 0 # 设置空闲登录的最大时长
    118 #ClientAliveCountMax 3 # 在没收到任何数据的时候,最多向3个客户端进行keepalive检测
    

    显示补丁级别

    119 #ShowPatchLevel no
    

    放置 sshd 这个 PID 的档案,默认值

    120 #PidFile /var/run/sshd.pid
    

    同时允许几个尚未登入的联机画面
    当连上 SSH 但是尚未输入密码时 这个时候就是 联机画面
    在这个联机画面中,为了保护主机,所以需要设定最大值,预设最多十个联机画面,而已经建立联机的不计算在这十个当中

    121 #MaxStartups 10:30:100
    

    允许tun设备转发

    122 #PermitTunnel no
    

    是否允许切换目录

    123 #ChrootDirectory none
    

    配置附加版本

    124 #VersionAddendum none
    125 
    

    不设置欢迎词

    126 # no default banner path
    127 #Banner none
    128 
    

    接受本地相关的环境变量类型
    指定客户端发送的哪些环境变量将会被传递到会话环境中

    129 # Accept locale-related environment variables
    130 AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    131 AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    132 AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    133 AcceptEnv XMODIFIERS
    134 
    

    是否开启sftp服务

    135 # override default of no subsystems
    136 Subsystem       sftp    /usr/libexec/openssh/sftp-server
    137 
    

    限制只允许某个用户登录

    138 # Example of overriding settings on a per-user basis
    139 #Match User anoncvs 
    

    是否开启X11转发

    140 #       X11Forwarding no
    

    允许TCP转发

    141 #       AllowTcpForwarding no
    
    142 #       PermitTTY no
    

    限制命令

    143 #       ForceCommand cvs server
    

    一般来说,为了要判断客户端来源是正常合法的,会使用 DNS 去反查客户端的主机名
    不过如果是在内网互连,设定为 no 会让联机达成速度更快

    144 UseDNS no
    
    145 AddressFamily inet
    

    登入设定,是否允许 root 用户登录以任何认证方式登录
    yes # 允许 root用户 以任何认证方式登录(用户名密码认证,公钥认证)
    no # 不允许 root用户 以任何认证方式登录
    without-password # 只允许 root用户 public key 认证方式登录

    146 PermitRootLogin yes
    

    Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。
    守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行。守护进程经常以超级用户(root)权限运行,因为它们要使用特殊的端口(1-1024)或访问某些特殊的资源。
    一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程。守护进程是非交互式程序,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备stderr的输出都需要特殊处理。
    守护进程的名称通常以d结尾,比如sshd、xinetd、crond等
    有关登录的文件信息 和 daemon
    当使用 SSH 登入系统的时候,SSH 会记录信息
    预设是以 AUTH 来设定的,即是 /var/log/secure

    147 SyslogFacility AUTHPRIV
    

    是否可以使用密码登录

    148 PasswordAuthentication yes
    

     不定期更新 不合适的地方 还请指点~ 感激不尽

    相关文章

      网友评论

          本文标题:sshd_config

          本文链接:https://www.haomeiwen.com/subject/kjadvxtx.html