sshd_config配置详解

sshd_config配置详解
名称
sshd_config - OpenSSH SSH 服务器守护进程配置⽂件
⼤纲
/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
这个指令后⾯跟着⼀串⽤空格分隔的组名列表(其中可以使⽤"*"和"?"通配符)。默认允许所有组登录。
如果使⽤了这个指令,那么将仅允许这些组中的成员登录,⽽拒绝其它所有组。
这⾥的"组"是指"主组"(primary group),也就是/etc/passwd⽂件中指定的组。
这⾥只允许使⽤组的名字⽽不允许使⽤GID。相关的 allow/deny 指令按照下列顺序处理:
生物质气化燃烧机DenyUsers, AllowUsers, DenyGroups, AllowGroups
AllowTcpForwarding
是否允许TCP转发,默认值为"yes"。
禁⽌TCP转发并不能增强安全性,除⾮禁⽌了⽤户对shell的访问,因为⽤户可以安装他们⾃⼰的转发器。
AllowUsers
这个指令后⾯跟着⼀串⽤空格分隔的⽤户名列表(其中可以使⽤"*"和"?"通配符)。默认允许所有⽤户登录。
如果使⽤了这个指令,那么将仅允许这些⽤户登录,⽽拒绝其它所有⽤户。
如果指定了 USER@HOST 模式的⽤户,那么 USER 和 HOST 将同时被检查。
这⾥只允许使⽤⽤户的名字⽽不允许使⽤UID。相关的 allow/deny 指令按照下列顺序处理:
DenyUsers, AllowUsers, DenyGroups, AllowGroups
AuthorizedKeysFile
存放该⽤户可以⽤来登录的 RSA/DSA 公钥。
该指令中可以使⽤下列根据连接时的实际情况进⾏展开的符号:
%% 表⽰'%'、%h 表⽰⽤户的主⽬录、%u 表⽰该⽤户的⽤户名。
经过扩展之后的值必须要么是绝对路径,要么是相对于⽤户主⽬录的相对路径。
默认值是".ssh/authorized_keys"。
Banner
输出滤波器
将这个指令指定的⽂件中的内容在⽤户进⾏认证前显⽰给远程⽤户。
这个特性仅能⽤于SSH-2,默认什么内容也不显⽰。"none"表⽰禁⽤这个特性。
这个特性仅能⽤于SSH-2,默认什么内容也不显⽰。"none"表⽰禁⽤这个特性。
ChallengeResponseAuthentication
是否允许质疑-应答(challenge-response)认证。默认值是"yes"。
所有 f(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
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|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,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协议。

本文发布于:2024-09-22 06:54:20,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/159931.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:允许   指令   认证   是否   远程
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议