【导读】
本文将详细解释sshd_config文件中各个配置指令的作用和用法。
基本配置指令
Port
指定sshd监听的端口号,默认为22。为了增加安全性,可以在生产环境中将其更改为其他五位数的端口。
Port 2222
AddressFamily
指定sshd应当使用哪种地址族,可选值为“any”(默认,同时监听IPv4和IPv6)、“inet”(仅监听IPv4)和“inet6”(仅监听IPv6)。
AddressFamily any
ListenAddress
指定sshd监听的IP地址。如果服务器有多个IP地址,可以通过此指令指定监听特定的IP地址。
ListenAddress 192.168.1.100
Protocol
指定使用的SSH协议版本,可以是1或2。如果要同时支持两者,需使用逗号分隔,如“2,1”。
Protocol 2,1
HostKey
指定包含服务器私钥的文件路径。sshd支持多种类型的密钥,包括RSA、DSA、ECDSA和ED25519。
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
认证和访问控制
PermitRootLogin
控制是否允许root用户通过SSH登录。出于安全考虑,建议在生产环境中将其设置为“no”。
PermitRootLogin no
PasswordAuthentication
控制是否允许密码认证。如果仅希望通过密钥进行认证,可以将其设置为“no”。
PasswordAuthentication no
PubkeyAuthentication
控制是否允许公钥认证。
PubkeyAuthentication yes
AuthorizedKeysFile
指定公钥认证时使用的公钥文件路径。
AuthorizedKeysFile .ssh/authorized_keys
AllowUsers 和 DenyUsers
指定允许或拒绝通过SSH访问的用户列表。
AllowUsers user1 user2
DenyUsers user3
AllowGroups 和 DenyGroups
指定允许或拒绝通过SSH访问的用户组列表。
AllowGroups group1 group2
DenyGroups group3
安全性和日志记录
LoginGraceTime
指定用户登录认证的宽限时间(秒),超过该时间仍未成功认证则断开连接。
LoginGraceTime 600
MaxAuthTries
指定每个连接允许的最大认证尝试次数。
MaxAuthTries 6
StrictModes
控制sshd在接收登录请求前是否检查用户家目录和rhosts文件的权限和所有权。
StrictModes yes
SyslogFacility
指定记录sshd日志的设施级别。
SyslogFacility AUTH
LogLevel
指定日志记录的详细级别,如INFO、DEBUG等。
LogLevel INFO
其他高级配置
X11Forwarding
控制是否允许X11转发。
X11Forwarding yes
TCPKeepAlive
控制是否向客户端发送TCP keepalive消息。
TCPKeepAlive yes
UseDNS
控制是否对客户端进行DNS反向解析。
UseDNS no
Compression
控制是否对通信数据进行压缩。
Compression yes
ClientAliveInterval
指定服务器向客户端发送“alive”消息的间隔时间(秒)。
ClientAliveInterval 300
ClientAliveCountMax
指定在未收到客户端回应前,服务器最多允许发送多少个“alive”消息。
ClientAliveCountMax 3
通过合理配置上述指令,管理员可以有效地管理OpenSSH服务器的安全性和功能。修改sshd_config后,需要重启sshd服务以使配置生效:
systemctl restart sshd
总结来说,sshd_config是Linux系统中OpenSSH服务的关键配置文件,通过对其进行细致的调整,可以显著提升系统的安全性和用户体验。




