SSH服务器配置文件 sshd_config 详解--转
(2011-12-09 11:59:37)
标签:
sshdit |
分类: linux |
AcceptEnv
该关健字的值是空格分隔的变量名列表(其中可以使用’*'和’?'作为通配符),也可以使用多个AcceptEnv达到同样的目的。需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用默认值:是不传递任何环境变量
AddressFamily
指定sshd(8)应当使用哪种地址族,取值范围:”any”(默认)、”inet”(仅IPv4)、”inet6″(仅IPv6)
AllowGroups
这个指令后面跟着一串用空格分隔的组名列表(其中可以使用”*”和”?”通配符),默认允许所有组登录。如果使用了这个指令,那么将仅允许这些组中的成员登录,而拒绝其它所有组。这里的”组”是指”主组”(primary group),也就是/etc/passwd文件中指定的组。
这里只允许使用组的名字而不允许使用GID。相关的
AllowTcpForwarding
是否允许TCP转发,默认值为”yes”。
禁止TCP转发并不能增强安全性,除非禁止了用户对shell的访问,因为用户可以安装他们自己的转发器
AllowUsers
这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用”*”和”?”通配符)。默认允许所有用户登录。
如果使用了这个指令,那么将仅允许这些用户登录,而拒绝其它所有用户。
如果指定了
这里只允许使用用户的名字而不允许使用UID。相关的
DenyUsers -->AllowUsers-->DenyGroups --> AllowGroups
AuthorizedKeysFile
存放该用户可以用来登录的
该指令中可以使用下列根据连接时的实际情况进行展开的符号:%%
Banner
ChallengeResponseAuthent
Ciphers
“aes128-cbc”,
默认值是可以使用上述所有算法
ClientAliveCountMax
到达这个上限后,sshd(8)
需要注意的是,”alive”消息与
“alive”消息是通过加密连接发送的,因此不会被欺骗;而
如果ClientAliveInterval被设为15
ClientAliveInterval
Compression
DenyGroups
如果使用了这个指令,那么这些组中的成员将被拒绝登录。
这里的”组”是指”主组”(primary group),也就是/etc/passwd文件中指定的组。
这里只允许使用组的名字而不允许使用GID。相关的
DenyUsers
如果使用了这个指令,那么这些用户将被拒绝登录。
如果指定了
这里只允许使用用户的名字而不允许使用UID。相关的
DenyUsers -> AllowUsers -> DenyGroups -> AllowGroups
ForceCommand
强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录shell执行(shell -c)。
这可以应用于
这个命令最初是在客户端通过
GatewayPorts
sshd(8)
GatewayPorts
“no”表示仅允许本地连接,”yes”表示强制将远程端口转发绑定到统配地址(wildcard address),
“clientspecified”表示允许客户端选择将远程端口转发绑定到哪个地址
GSSAPIAuthentication
只支持SSHv2协议
是否允许使用基于
GSSAPICleanupCredentials
只支持SSHv2协议
是否在用户退出登录后自动销毁用户凭证缓存。默认值是”yes”
HostbasedAuthentication
只支持SSHv2协议
这个指令与
HostbasedUsesNameFromPac
指定服务器在使用
“yes”表示
HostKey
SSHv1默认是:
SSHv2默认是:/etc/ssh/ssh_host_rsa_key
IgnoreRhosts
IgnoreUserKnownHosts
KerberosAuthentication
KerberosGetAFSToken
KerberosOrLocalPasswd
KerberosTicketCleanup
KeyRegenerationInterval
只支持SSHv1协议
在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。
这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。
设为
ListenAddress
ListenAddress
ListenAddress
ListenAddress
如果未指定
可以使用多个
LoginGraceTime
LogLevel
QUIET,
DEBUG
比
MACs
只支持SSHv2协议
指定允许在SSH-2中使用哪些消息摘要算法来进行数据校验。可以使用逗号分隔的列表来指定允许使用多个算法。默认值(包含所有可以使用的算法)是:
hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96
Match
MaxAuthTries
如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息
MaxSessions
MaxStartups
到达限制后,将不再接受新连接,除非先前的连接认证成功或超出
PasswordAuthentication
是否允许使用基于密码的认证。默认为”yes”
PermitEmptyPasswords
PermitOpen
指定TCP端口转发允许的目的地,可以使用空格分隔多个转发目标。默认允许所有转发请求。
合法的指令格式如下:
PermitOpen host:port
PermitOpen IPv4_addr:port
PermitOpen [IPv6_addr]:port
“any”可以用于移除所有限制并允许一切转发请求
PermitRootLogin
“yes”(默认)
“without-password”表示禁止使用密码认证登录。
“forced-commands-only”表示只有在指定了
同时其它认证方法全部被禁止。这个值常用于做远程备份之类的事情
PermitTunnel
“yes”,
PermitUserEnvironment
默认值是”no”。如果设为”yes”可能会导致用户有机会使用某些机制(比如
PidFile
指定在哪个文件中存放SSH守护进程的进程号,默认为
Port
默认将在本机的所有网络接口上监听,但是可以通过
PrintLastLog
PrintMotd
Protocol
‘1′和’2′表示仅仅支持SSH-1和SSH-2协议。”2,1″表示同时支持SSH-1和SSH-2协议
PubkeyAuthentication
只支持SSHv2协议
是否允许公钥认证。默认值为”yes”
RhostsRSAAuthentication
只支持SSHv1协议
是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证)
这是通过在RSA认证成功后再检查
出于安全考虑,建议使用默认值”no”
RSAAuthentication
只支持SSHv1协议
是否允许使用纯
ServerKeyBits
只支持SSHv1协议
指定临时服务器密钥的长度。仅用于SSH-1。默认值是
StrictModes
强烈建议使用默认值”yes”来预防可能出现的低级错误
Subsystem
只支持SSHv2协议
配置一个外部子系统(例如,一个文件传输守护进程)。
值是一个子系统的名字和对应的命令行(含选项和参数)。比如”sft /bin/sftp-server”
SyslogFacility
DAEMON,
TCPKeepAlive
UseDNS
UseLogin
如果开启此指令,那么
需要注意的是,login(1)
如果指定了
UsePAM
如果该指令的值设置为”yes”,那么表示启用PAM并运用ChallengeResponseAuthent
由于PAM的身份验证,通常相当于密码验证,所以你应该禁用PasswordAuthentication
如果启用了PAM,那么必须使用root才能运行sshd,默认值为no
UsePrivilegeSeparation
认证成功后,将以该认证用户的身份创建另一个子进程。
这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全
X11DisplayOffset
这个可以用于防止
X11Forwarding
是否允许进行
如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。
那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为”no”。
需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。
如果启用了
X11UseLocalhost
sshd
这可以防止远程主机连接到
为了兼容这些老旧的X11客户端,你可以设为”no”
XAuthLocation
Time Formats
其中的
<无> -----------------秒
s | S -----------------秒
m | M ---------------分钟
h | H ----------------小时
d | D -----------------天
w | W ----------------星期
可以通过指定多个数值来累加时间,比如:
1h30m
1