ssh配置文件的参数

根据上次的踩坑,知道这个ssh配置文件的重要,并且根据这个文件能够作一些安全的策略。这里收集了一些配置的含义:算法

名称
    sshd_config - OpenSSH SSH 服务器守护进程配置文件shell

目录
    /etc/ssh/sshd_config缓存

描述
    sshd(8) 默认从 /etc/ssh/sshd_config 文件(或经过 -f 命令行选项指定的文件)读取配置信息。
    配置文件是由"指令 值"对组成的,每行一个。空行和以'#'开头的行都将被忽略。
    若是值中含有空白符或者其余特殊符号,那么能够经过在两边加上双引号(")进行界定。
    [注意]值是大小写敏感的,但指令是大小写无关的。

    当前全部可使用的配置指令以下:    安全

 AcceptEnv
            指定客户端发送的哪些环境变量将会被传递到会话环境中。[注意]只有SSH-2协议支持环境变量的传递。细节能够参考 ssh_config(5) 中的 SendEnv 配置指令。指令的值是空格分隔的变量名列表(其中可使用'*'和'?'做为通配符)。也可使用多个AcceptEnv 达到一样的目的。须要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。因为这个缘由,该指令应当当心使用。默认是不传递任何环境变量。     服务器


AddressFamilycookie

            指定 sshd(8) 应当使用哪一种地址族。取值范围是:"any"(默认)、"inet"(仅IPv4)、"inet6"(仅IPv6)。     网络


AllowGroups
            这个指令后面跟着一串用空格分隔的组名列表(其中可使用"*"和"?"通配符)。默认容许全部组登陆。
            若是使用了这个指令,那么将仅容许这些组中的成员登陆,而拒绝其它全部组。
            这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。
            这里只容许使用组的名字而不容许使用GID。相关的 allow/deny 指令按照下列顺序处理:             DenyUsers, AllowUsers, DenyGroups, AllowGroups

ssh


AllowTcpForwarding
            是否容许TCP转发,默认值为"yes"。
            禁止TCP转发并不能加强安全性,除非禁止了用户对shell的访问,由于用户能够安装他们本身的转发器。     AllowUsers
            这个指令后面跟着一串用空格分隔的用户名列表(其中可使用"*"和"?"通配符)。默认容许全部用户登陆。
            若是使用了这个指令,那么将仅容许这些用户登陆,而拒绝其它全部用户。
            若是指定了 USER@HOST 模式的用户,那么 USER 和 HOST 将同时被检查。
            这里只容许使用用户的名字而不容许使用UID。相关的 allow/deny 指令按照下列顺序处理:             DenyUsers, AllowUsers, DenyGroups, AllowGroups

ide


AuthorizedKeysFile
            存放该用户能够用来登陆的 RSA/DSA 公钥。
            该指令中可使用下列根据链接时的实际状况进行展开的符号:
            %% 表示'%'、%h 表示用户的主目录、%u 表示该用户的用户名。
            通过扩展以后的值必需要么是绝对路径,要么是相对于用户主目录的相对路径。
            默认值是".ssh/authorized_keys"。     Banner
            将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。
            这个特性仅能用于SSH-2,默认什么内容也不显示。"none"表示禁用这个特性。     oop


ChallengeResponseAuthentication
            是否容许质疑-应答(challenge-response)认证。默认值是"yes"。
            全部 login.conf(5) 中容许的认证方式都被支持。     Ciphers
            指定SSH-2容许使用的加密算法。多个算法之间使用逗号分隔。可使用的算法以下:
            "aes128-cbc", "aes192-cbc", "aes256-cbc", "aes128-ctr", "aes192-ctr", "aes256-ctr",
            "3des-cbc", "arcfour128", "arcfour256", "arcfour", "blowfish-cbc", "cast128-cbc"
            默认值是可使用上述全部算法。     


ClientAliveCountMax
            sshd(8) 在未收到任何客户端回应前最多容许发送多少个"alive"消息。默认值是 3 。
            到达这个上限后,sshd(8) 将强制断开链接、关闭会话。
            须要注意的是,"alive"消息与 TCPKeepAlive 有很大差别。
            "alive"消息是经过加密链接发送的,所以不会被欺骗;而 TCPKeepAlive 倒是能够被欺骗的。
            若是 ClientAliveInterval 被设为 15 而且将 ClientAliveCountMax 保持为默认值,
            那么无应答的客户端大约会在45秒后被强制断开。这个指令仅能够用于SSH-2协议。     



ClientAliveInterval
            设置一个以秒记的时长,若是超过这么长时间没有收到客户端的任何数据,
            sshd(8) 将经过安全通道向客户端发送一个"alive"消息,并等候应答。
            默认值 0 表示不发送"alive"消息。这个选项仅对SSH-2有效。     Compression
            是否对通讯数据进行加密,仍是延迟到认证成功以后再对通讯数据加密。
            可用值:"yes", "delayed"(默认), "no"。     DenyGroups
            这个指令后面跟着一串用空格分隔的组名列表(其中可使用"*"和"?"通配符)。默认容许全部组登陆。
            若是使用了这个指令,那么这些组中的成员将被拒绝登陆。
            这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。
            这里只容许使用组的名字而不容许使用GID。相关的 allow/deny 指令按照下列顺序处理:             DenyUsers, AllowUsers, DenyGroups, AllowGroups

DenyUsers
            这个指令后面跟着一串用空格分隔的用户名列表(其中可使用"*"和"?"通配符)。默认容许全部用户登陆。
            若是使用了这个指令,那么这些用户将被拒绝登陆。
            若是指定了 USER@HOST 模式的用户,那么 USER 和 HOST 将同时被检查。
            这里只容许使用用户的名字而不容许使用UID。相关的 allow/deny 指令按照下列顺序处理:             DenyUsers, AllowUsers, DenyGroups, AllowGroups


ForceCommand
            强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登陆shell执行(shell -c)。
            这能够应用于 shell 、命令、子系统的完成,一般用于 Match 块中。
            这个命令最初是在客户端经过 SSH_ORIGINAL_COMMAND 环境变量来支持的。     



GatewayPorts
            是否容许远程主机链接本地的转发端口。默认值是"no"。
            sshd(8) 默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机链接到转发端口。             GatewayPorts 指令可让 sshd 将远程端口转发绑定到非loopback地址,这样就能够容许远程主机链接了。
            "no"表示仅容许本地链接,"yes"表示强制将远程端口转发绑定到统配地址(wildcard address),
            "clientspecified"表示容许客户端选择将远程端口转发绑定到哪一个地址。     


GSSAPIAuthentication
            是否容许使用基于 GSSAPI 的用户认证。默认值为"no"。仅用于SSH-2。     


GSSAPICleanupCredentials
            是否在用户退出登陆后自动销毁用户凭证缓存。默认值是"yes"。仅用于SSH-2。     


HostbasedAuthentication
            这个指令与 RhostsRSAAuthentication 相似,可是仅能够用于SSH-2。推荐使用默认值"no"。
            推荐使用默认值"no"禁止这种不安全的认证方式。     



HostbasedUsesNameFromPacketOnly
            在开启 HostbasedAuthentication 的状况下,
            指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询。
            "yes"表示 sshd(8) 信任客户端提供的主机名而不进行反向查询。默认值是"no"。     



HostKey
            主机私钥文件的位置。若是权限不对,sshd(8) 可能会拒绝启动。
            SSH-1默认是 /etc/ssh/ssh_host_key 。
            SSH-2默认是 /etc/ssh/ssh_host_rsa_key 和 /etc/ssh/ssh_host_dsa_key 。
            一台主机能够拥有多个不一样的私钥。"rsa1"仅用于SSH-1,"dsa"和"rsa"仅用于SSH-2。   


IgnoreRhosts
            是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程当中忽略 .rhosts 和 .shosts 文件。
            不过 /etc/hosts.equiv 和 /etc/shosts.equiv 仍将被使用。推荐设为默认值"yes"。   



IgnoreUserKnownHosts
            是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程当中忽略用户的 ~/.ssh/known_hosts 文件。
            默认值是"no"。为了提升安全性,能够设为"yes"。     KerberosAuthentication
            是否要求用户为 PasswordAuthentication 提供的密码必须经过 Kerberos KDC 认证,也就是是否使用Kerberos认证。
            要使用Kerberos认证,服务器须要一个能够校验 KDC identity 的 Kerberos servtab 。默认值是"no"。     KerberosGetAFSToken
            若是使用了 AFS 而且该用户有一个 Kerberos 5 TGT,那么开启该指令后,
            将会在访问用户的家目录前尝试获取一个 AFS token 。默认为"no"。     



KerberosOrLocalPasswd
            若是 Kerberos 密码认证失败,那么该密码还将要经过其它的认证机制(好比 /etc/passwd)。
            默认值为"yes"。     KerberosTicketCleanup
            是否在用户退出登陆后自动销毁用户的 ticket 。默认值是"yes"。     


KeyRegenerationInterval
            在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断从新生成。
            这个机制能够尽可能减少密钥丢失或者******形成的损失。
            设为 0 表示永不从新生成,默认为 3600(秒)。     


ListenAddress
            指定 sshd(8) 监听的网络地址,默认监听全部地址。可使用下面的格式:                   ListenAddress host|IPv4_addr|IPv6_addr
                  ListenAddress host|IPv4_addr:port
                  ListenAddress [host|IPv6_addr]:port

            若是未指定 port ,那么将使用 Port 指令的值。
            可使用多个 ListenAddress 指令监听多个地址。    


LoginGraceTime
            限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒。     


LogLevel
            指定 sshd(8) 的日志等级(详细程度)。可用值以下:
            QUIET, FATAL, ERROR, INFO(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3
            DEBUG 与 DEBUG1 等价;DEBUG2 和 DEBUG3 则分别指定了更详细、更罗嗦的日志输出。
            比 DEBUG 更详细的日志可能会泄漏用户的敏感信息,所以反对使用。     MACs
            指定容许在SSH-2中使用哪些消息摘要算法来进行数据校验。
            可使用逗号分隔的列表来指定容许使用多个算法。默认值(包含全部可使用的算法)是:
            hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96     Match
            引入一个条件块。块的结尾标志是另外一个 Match 指令或者文件结尾。
            若是 Match 行上指定的条件都知足,那么随后的指令将覆盖全局配置中的指令。             Match 的值是一个或多个"条件-模式"对。可用的"条件"是:User, Group, Host, Address 。
            只有下列指令能够在 Match 块中使用:AllowTcpForwarding, Banner,             ForceCommand, GatewayPorts, GSSApiAuthentication,             KbdInteractiveAuthentication, KerberosAuthentication,             PasswordAuthentication, PermitOpen, PermitRootLogin,             RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset,             X11Forwarding, X11UseLocalHost


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


MaxStartups
            最大容许保持多少个未认证的链接。默认值是 10 。
            到达限制后,将再也不接受新链接,除非先前的链接认证成功或超出 LoginGraceTime 的限制。     


PasswordAuthentication
            是否容许使用基于密码的认证。默认为"yes"。     


PermitEmptyPasswords
            是否容许密码为空的用户远程登陆。默认为"no"。     


PermitOpen
            指定TCP端口转发容许的目的地,可使用空格分隔多个转发目标。默认容许全部转发请求。
            合法的指令格式以下:                   

                  PermitOpen host:port
                  PermitOpen IPv4_addr:port
                  PermitOpen [IPv6_addr]:port
            "any"能够用于移除全部限制并容许一切转发请求。     


PermitRootLogin
            是否容许 root 登陆。可用值以下:
            "yes"(默认) 表示容许。"no"表示禁止。
            "without-password"表示禁止使用密码认证登陆。
            "forced-commands-only"表示只有在指定了 command 选项的状况下才容许使用公钥认证登陆。
              同时其它认证方法所有被禁止。这个值经常使用于作远程备份之类的事情。     



PermitTunnel
            是否容许 tun(4) 设备转发。可用值以下:
            "yes", "point-to-point"(layer 3), "ethernet"(layer 2), "no"(默认)。
            "yes"同时蕴含着"point-to-point"和"ethernet"。     


PermitUserEnvironment
            指定是否容许 sshd(8) 处理 ~/.ssh/environment 以及 ~/.ssh/authorized_keys 中的 environment= 选项。
            默认值是"no"。若是设为"yes"可能会致使用户有机会使用某些机制(好比 LD_PRELOAD)绕过访问控制,形成安全漏洞。     


PidFile

            指定在哪一个文件中存放SSH守护进程的进程号,默认为 /var/run/sshd.pid 文件。     


Port
            指定 sshd(8) 守护进程监听的端口号,默认为 22 。可使用多条指令监听多个端口。
            默认将在本机的全部网络接口上监听,可是能够经过 ListenAddress 指定只在某个特定的接口上监听。     



PrintLastLog
            指定 sshd(8) 是否在每一次交互式登陆时打印最后一位用户的登陆时间。默认值是"yes"。     


PrintMotd
            指定 sshd(8) 是否在每一次交互式登陆时打印 /etc/motd 文件的内容。默认值是"yes"。


Protocol
            指定 sshd(8) 支持的SSH协议的版本号。
            '1'和'2'表示仅仅支持SSH-1和SSH-2协议。"2,1"表示同时支持SSH-1和SSH-2协议。     



PubkeyAuthentication
            是否容许公钥认证。仅能够用于SSH-2。默认值为"yes"。     RhostsRSAAuthentication
            是否使用强可信主机认证(经过检查远程主机名和关联的用户名进行认证)。仅用于SSH-1。
            这是经过在RSA认证成功后再检查 ~/.rhosts 或 /etc/hosts.equiv 进行认证的。
            出于安全考虑,建议使用默认值"no"。     RSAAuthentication
            是否容许使用纯 RSA 公钥认证。仅用于SSH-1。默认值是"yes"。     ServerKeyBits
            指定临时服务器密钥的长度。仅用于SSH-1。默认值是 768(位)。最小值是 512 。     



StrictModes
            指定是否要求 sshd(8) 在接受链接请求前对用户主目录和相关的配置文件进行宿主和权限检查。
            强烈建议使用默认值"yes"来预防可能出现的低级错误。     


Subsystem
            配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。
            值是一个子系统的名字和对应的命令行(含选项和参数)。好比"sft /bin/sftp-server"。 


 SyslogFacility
            指定 sshd(8) 将日志消息经过哪一个日志子系统(facility)发送。有效值是:
            DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7     TCPKeepAlive
            指定系统是否向客户端发送 TCP keepalive 消息。默认值是"yes"。
            这种消息能够检测到死链接、链接不当关闭、客户端崩溃等异常。
            能够设为"no"关闭这个特性。     


UseDNS
            指定 sshd(8) 是否应该对远程主机名进行反向解析,以检查此主机名是否与其IP地址真实对应。默认值为"yes"。     UseLogin
            是否在交互式会话的登陆过程当中使用 login(1) 。默认值是"no"。
            若是开启此指令,那么 X11Forwarding 将会被禁止,由于 login(1) 不知道如何处理 xauth(1) cookies 。
            须要注意的是,login(1) 是禁止用于远程执行命令的。
            若是指定了 UsePrivilegeSeparation ,那么它将在认证完成后被禁用。     



UsePrivilegeSeparation
            是否让 sshd(8) 经过建立非特权子进程处理接入请求的方法来进行权限分离。默认值是"yes"。
            认证成功后,将以该认证用户的身份建立另外一个子进程。
            这样作的目的是为了防止经过有缺陷的子进程提高权限,从而使系统更加安全。     


X11DisplayOffset
            指定 sshd(8) X11 转发的第一个可用的显示区(display)数字。默认值是 10 。
            这个能够用于防止 sshd 占用了真实的 X11 服务器显示区,从而发生混淆。     



X11Forwarding
            是否容许进行 X11 转发。默认值是"no",设为"yes"表示容许。
            若是容许X11转发而且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。
            那么将可能有额外的信息被泄漏。因为使用X11转发的可能带来的风险,此指令默认值为"no"。
            须要注意的是,禁止X11转发并不能禁止用户转发X11通讯,由于用户能够安装他们本身的转发器。
            若是启用了 UseLogin ,那么X11转发将被自动禁止。     


X11UseLocalhost
            sshd(8) 是否应当将X11转发服务器绑定到本地loopback地址。默认值是"yes"。
            sshd 默认将转发服务器绑定到本地loopback地址并将 DISPLAY 环境变量的主机名部分设为"localhost"。
            这能够防止远程主机链接到 proxy display 。不过某些老旧的X11客户端不能在此配置下正常工做。
            为了兼容这些老旧的X11客户端,你能够设为"no"。     


XAuthLocation             指定 xauth(1) 程序的绝对路径。默认值是 /usr/X11R6/bin/xauth时间格式     在 sshd(8) 命令行参数和配置文件中使用的时间值能够经过下面的格式指定:time[qualifier] 。     其中的 time 是一个正整数,而 qualifier 能够是下列单位之一:           <无>    秒           s | S   秒           m | M   分钟           h | H   小时           d | D   天           w | W   星期     能够经过指定多个数值来累加时间,好比:           1h30m   1 小时 30 分钟 (90 分钟)文件     /etc/ssh/sshd_config             sshd(8) 的主配置文件。这个文件的宿主应当是root,权限最大能够是"644"