Linux sshd 配置解释

阅读:450 2019-03-19 14:43:03 来源:新网

sshd_config-opensshssh服务器守护进程配置文件大纲

/etc/ssh/sshd_config描述

sshd(8)默认从/etc/ssh/sshd_config文件(或通过-f命令行选项指定的文件)读取配置信息。配置文件是由"指令值"对组成的,每行一个。空行和以'#'开头的行都将被忽略。如果值中含有空白符或者其他特殊符号,那么可以通过在两边加上双引号(")进行界定。[注意]值是大小写敏感的,但指令是大小写无关的。当前所有可以使用的配置指令如下:acceptenv指定客户端发送的哪些环境变量将会被传递到会话环境中。[注意]只有ssh-2协议支持环境变量的传递。细节可以参考ssh_config(5)中的sendenv配置指令。指令的值是空格分隔的变量名列表(其中可以使用'*'和'?'作为通配符)。也可以使用多个acceptenv达到同样的目的。需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用。默认是不传递任何环境变量。addressfamily指定sshd(8)应当使用哪种地址族。取值范围是:"any"(默认)、"inet"(仅ipv4)、"inet6"(仅ipv6)。allowgroups这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*"和"?"通配符)。默认允许所有组登录。如果使用了这个指令,那么将仅允许这些组中的成员登录,而拒绝其它所有组。这里的"组"是指"主组"(primarygroup),也就是/etc/passwd文件中指定的组。这里只允许使用组的名字而不允许使用gid。相关的allow/deny指令按照下列顺序处理:denyusers,allowusers,denygroups,allowgroupsallowtcpforwarding是否允许tcp转发,默认值为"yes"。禁止tcp转发并不能增强安全性,除非禁止了用户对shell的访问,因为用户可以安装他们自己的转发器。allowusers这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*"和"?"通配符)。默认允许所有用户登录。如果使用了这个指令,那么将仅允许这些用户登录,而拒绝其它所有用户。如果指定了user@host模式的用户,那么user和host将同时被检查。这里只允许使用用户的名字而不允许使用uid。相关的allow/deny指令按照下列顺序处理:denyusers,allowusers,denygroups,allowgroupsauthorizedkeysfile存放该用户可以用来登录的rsa/dsa公钥。该指令中可以使用下列根据连接时的实际情况进行展开的符号:%%表示'%'、%h表示用户的主目录、%u表示该用户的用户名。经过扩展之后的值必须要么是绝对路径,要么是相对于用户主目录的相对路径。默认值是".ssh/authorized_keys"。banner将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。这个特性仅能用于ssh-2,默认什么内容也不显示。"none"表示禁用这个特性。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"默认值是可以使用上述所有算法。clientalivecountmaxsshd(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这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*"和"?"通配符)。默认允许所有组登录。如果使用了这个指令,那么这些组中的成员将被拒绝登录。这里的"组"是指"主组"(primarygroup),也就是/etc/passwd文件中指定的组。这里只允许使用组的名字而不允许使用gid。相关的allow/deny指令按照下列顺序处理:denyusers,allowusers,denygroups,allowgroupsdenyusers这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*"和"?"通配符)。默认允许所有用户登录。如果使用了这个指令,那么这些用户将被拒绝登录。如果指定了user@host模式的用户,那么user和host将同时被检查。这里只允许使用用户的名字而不允许使用uid。相关的allow/deny指令按照下列顺序处理:denyusers,allowusers,denygroups,allowgroupsforcecommand强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录shell执行(shell-c)。这可以应用于shell、命令、子系统的完成,通常用于match块中。这个命令最初是在客户端通过ssh_original_command环境变量来支持的。gatewayports是否允许远程主机连接本地的转发端口。默认值是"no"。sshd(8)默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。gatewayports指令可以让sshd将远程端口转发绑定到非loopback地址,这样就可以允许远程主机连接了。"no"表示仅允许本地连接,"yes"表示强制将远程端口转发绑定到统配地址(wildcardaddress),"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提供的密码必须通过kerberoskdc认证,也就是是否使用kerberos认证。要使用kerberos认证,服务器需要一个可以校验kdcidentity的kerberosservtab。默认值是"no"。kerberosgetafstoken如果使用了afs并且该用户有一个kerberos5tgt,那么开启该指令后,将会在访问用户的家目录前尝试获取一个afstoken。默认为"no"。kerberosorlocalpasswd如果kerberos密码认证失败,那么该密码还将要通过其它的认证机制(比如/etc/passwd)。默认值为"yes"。kerberosticketcleanup是否在用户退出登录后自动销毁用户的ticket。默认值是"yes"。keyregenerationinterval在ssh-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。设为0表示永不重新生成,默认为3600(秒)。listenaddress指定sshd(8)监听的网络地址,默认监听所有地址。可以使用下面的格式:listenaddresshost|ipv4_addr|ipv6_addrlistenaddresshost|ipv4_addr:portlistenaddress[host|ipv6_addr]:port如果未指定port,那么将使用port指令的值。可以使用多个listenaddress指令监听多个地址。logingracetime限制用户必须在指定的时限内认证成功,0表示无限制。默认值是120秒。loglevel指定sshd(8)的日志等级(详细程度)。可用值如下:quiet,fatal,error,info(默认),verbose,debug,debug1,debug2,debug3debug与debug1等价;debug2和debug3则分别指定了更详细、更罗嗦的日志输出。比debug更详细的日志可能会泄漏用户的敏感信息,因此反对使用。macs指定允许在ssh-2中使用哪些消息摘要算法来进行数据校验。可以使用逗号分隔的列表来指定允许使用多个算法。默认值(包含所有可以使用的算法)是:hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96match引入一个条件块。块的结尾标志是另一个match指令或者文件结尾。如果match行上指定的条件都满足,那么随后的指令将覆盖全局配置中的指令。match的值是一个或多个"条件-模式"对。可用的"条件"是:user,group,host,address。只有下列指令可以在match块中使用:allowtcpforwarding,banner,forcecommand,gatewayports,gssapiauthentication,kbdinteractiveauthentication,kerberosauthentication,passwordauthentication,permitopen,permitrootlogin,rhostsrsaauthentication,rsaauthentication,x11displayoffset,x11forwarding,x11uselocalhostmaxauthtries指定每个连接最大允许的认证次数。默认值是6。如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。maxstartups最大允许保持多少个未认证的连接。默认值是10。到达限制后,将不再接受新连接,除非先前的连接认证成功或超出logingracetime的限制。passwordauthentication是否允许使用基于密码的认证。默认为"yes"。permitemptypasswords是否允许密码为空的用户远程登录。默认为"no"。permitopen指定tcp端口转发允许的目的地,可以使用空格分隔多个转发目标。默认允许所有转发请求。合法的指令格式如下:permitopenhost:portpermitopenipv4_addr:portpermitopen[ipv6_addr]:port"any"可以用于移除所有限制并允许一切转发请求。permitrootlogin是否允许root登录。可用值如下:"yes"(默认)表示允许。"no"表示禁止。"without-password"表示禁止使用密码认证登录。"forced-commands-only"表示只有在指定了command选项的情况下才允许使用公钥认证登录。同时其它认证方法全部被禁止。这个值常用于做远程备份之类的事情。permittunnel是否允许tun(4)设备转发。可用值如下:"yes","point-to-point"(layer3),"ethernet"(layer2),"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,local7tcpkeepalive指定系统是否向客户端发送tcpkeepalive消息。默认值是"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转发将被自动禁止。x11uselocalhostsshd(8)是否应当将x11转发服务器绑定到本地loopback地址。默认值是"yes"。sshd默认将转发服务器绑定到本地loopback地址并将display环境变量的主机名部分设为"localhost"。这可以防止远程主机连接到proxydisplay。不过某些老旧的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星期可以通过指定多个数值来累加时间,比如:1h30m1小时30分钟(90分钟)文件

/etc/ssh/sshd_configsshd(8)的主配置文件。这个文件的宿主应当是root,权限最大可以是"644"。

相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服