CentOS 之 sshd_config 文件详解

文章
林里克斯

CentOS 之 sshd_config 文件详解


#
#Port 22
# 指定 sshd 守护进程的端口号,默认为 22
#AddressFamily any
# 指定 sshd 使用哪种地址族,可选 any(默认)|inet(仅IPv4)|inet6(仅IPv6)
#ListenAddress 0.0.0.0
#ListenAddress ::
# 指定 sshd 监听的网络地址,第一行是 IPv4 第二行是 IPv6

HostKey /etc/ssh/ssh_host_rsa_key
# 主机私钥的文件路径。需要注意启权限
# 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

# 密码和密钥:
#RekeyLimit 默认 none

# 登录日志
#SyslogFacility AUTH
# 指定 sshd 将日志信息通过那个日志子系统(facility)发送,可选 DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7
#LogLevel INFO
# 指定 sshd 的日志等级,可用 QUIET, FATAL, ERROR, INFO(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3, DEBUG 与 DEBUG1 等价;DEBUG2 和 DEBUG3 则分别指定了更详细的日志输出。

# 身份验证:
#LoginGraceTime 2m
# 限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒
#PermitRootLogin yes
# 限制 root 用户登录系统。可选 yes (允许 root 登录)| no (不允许 root 登录)| without-password (禁止使用密码认证登录)| forced-commands-only (表示只有在指定了 command 选项的情况下才允许使用公钥认证登录,同时其它认证方法全部被禁止)
#StrictModes yes
# 指定是否要求 sshd 在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查,建议使用 yes。
#MaxAuthTries 6
# 指定每个连接最大允许的认证次数,默认值为 6
#MaxSessions 10
# 

#PubkeyAuthentication yes
# 是否允许公钥认证登录,仅 SSH-2 可用,

AuthorizedKeysFile  .ssh/authorized_keys
# 存放用户的公钥文件的名字

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
#这个指令与 RhostsRSAAuthentication 类似,但是仅可以用于SSH-2
#IgnoreUserKnownHosts no
# 是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件
#IgnoreRhosts yes
# 是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略 .rhosts 和 .shosts 文件,不过 /etc/hosts.equiv 和 /etc/shosts.equiv 仍将被使用

#PermitEmptyPasswords no
# 是否允许密码为空的用户远程登录
PasswordAuthentication yes
# 是否允许使用基于密码的认证

ChallengeResponseAuthentication no
#是否允许质疑-应答(challenge-response)认证

# 认证选项
#KerberosAuthentication no
# 是否要求用户为 PasswordAuthentication 提供的密码必须通过 Kerberos KDC 认证,也就是是否使用 Kerberos 认证。
要使用 Kerberos 认证,服务器需要一个可以校验 KDC identity 的 Kerberos servtab
#KerberosOrLocalPasswd yes
# 如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)
#KerberosTicketCleanup yes
#是否在用户退出登录后自动销毁用户的 ticket
#KerberosGetAFSToken no
# 如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个 AFS token
#KerberosUseKuserok yes

# GSSAPI 选项
GSSAPIAuthentication yes
# 是否允许使用基于 GSSAPI 的用户认证,仅适用 SSH-2
GSSAPICleanupCredentials no
# 是否在用户退出登录后自动销毁用户凭证缓存,仅适用 SSH-2
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
# problems.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
# 是否允许 TCP 转发
#GatewayPorts no
#是否允许远程主机连接本地的转发端口
X11Forwarding yes
# 是否允许进行 X11 转发
#X11DisplayOffset 10
# 指定 sshd 转发的第一个可用的显示区 (display) 数字,这个可以用于防止 sshd 占用了真实的 X11 服务器显示区,从而发生混淆
#X11UseLocalhost yes
# 是否应当将 X11 转发服务器绑定到本地 loopback 地址
#PermitTTY yes
#PrintMotd yes
# 指定 sshd 是否在每一次交互式登录时打印 /etc/motd 文件的内容
#PrintLastLog yes
# 指定 sshd 是否在每一次交互式登录时打印最后一位用户的登录时间
#TCPKeepAlive yes
# 指定系统是否向客户端发送 TCP keepalive 消息,这类消息可以检测到死连接、连接不当关闭、客户端崩溃等异常

#UseLogin no
# 是否在交互式会话的登录过程中使用 Login
#UsePrivilegeSeparation sandbox
#PermitUserEnvironment no
# 指定是否允许 sshd 处理 ~/.ssh/environment 以及 ~/.ssh/authorized_keys 中的 environment= 选项
#Compression delayed
# 是否对通信数据进行压缩,还是延迟到认证成功之后再对通信数据进行压缩。可选 yes|delayed|no
#ClientAliveInterval 0
# 设置一个以秒记的时长,如果超过这么长时间没有收到客户端的任何数据,sshd 将通过安全通道向客户端发送一个 alive 消息,并等候应答,默认值 0 表示不发送 alive 消息,仅适用 SSH-2
#ClientAliveCountMax 3
# 在未收到任何客户端回应前最多允许发送多少个 alive 消息,如果 ClientAliveInterval 被设为 15 并且将 ClientAliveCountMax 保持为默认值,那么无应答的客户端大约会在45秒后被强制断开
#ShowPatchLevel no
#UseDNS yes
# 指定 sshd 是否应该对远程主机名进行反向解析,以检查此主机名是否与其 IP 地址真实对应
#PidFile /var/run/sshd.pid
# 指定在哪个文件中存放 SSH 守护进程的进程号
#MaxStartups 10:30:100
# 最大允许保持多少个未认证的连接,到达限制后,将不再接受新连接,除非先前的连接认证成功或超出 LoginGraceTime 的限制
#PermitTunnel no
# 是否允许 tun(网络隧道伪设备) 设备转发,可选  yes|point-to-point(layer 3)|ethernet(layer 2)|no(默认)。
# yes 同时蕴含着 point-to-point 和 ethernet 
#ChrootDirectory none
#VersionAddendum none

#Banner none
# 将指定的文件中的内容在用户进行认证前显示给远程用户

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
# 指定客户端发送的哪些环境变量将会被传递到会话环境中

Subsystem   sftp    /usr/libexec/openssh/sftp-server
# 配置一个外部子系统(例如,一个文件传输守护进程)

---

未列入配置项

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

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

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

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

Ciphers
指定 SSH-2 允许使用的加密算法。多个算法之间使用逗号分隔。可以使用的算法如下:
"aes128-cbc", "aes192-cbc", "aes256-cbc", "aes128-ctr", "aes192-ctr", "aes256-ctr",
"3des-cbc", "arcfour128", "arcfour256", "arcfour", "blowfish-cbc", "cast128-cbc"

ForceCommand
#强制执行这里指定的命令而忽略客户端提供的任何命令

RhostsRSAAuthentication
#是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证),仅用于SSH-1
#这是通过在 RSA 认证成功后再检查 ~/.rhosts 或 /etc/hosts.equiv 进行认证的

HostbasedUsesNameFromPacketOnly
#在开启 HostbasedAuthentication 的情况下,指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询。

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

MACs
#指定允许在 SSH-2 中使用哪些消息摘要算法来进行数据校验
#可以使用逗号分隔的列表来指定允许使用多个算法。默认值(包含所有可以使用的算法)是:hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96

PermitOpen
#指定 TCP 端口转发允许的目的地,可以使用空格分隔多个转发目标。默认允许所有转发请求
合法的指令格式如下:
PermitOpen host:port
PermitOpen IPv4_addr:port
PermitOpen [IPv6_addr]:port
#any 可以用于移除所有限制并允许一切转发请求

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

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

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

Over~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

1403 0 2020-12-06


分享:
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-12-28

今日天气
站点统计
  • 文章总数:241篇
  • 分类总数:29个
  • 评论总数:12条
  • 本站总访问量 353563 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!