文件路径是
/etc/ssh/sshd_config
参数详解:
当然可以,以下是对 sshd_config
文件中一些常见参数的解释:
1. Include /etc/ssh/sshd_config.d/*.conf
#
- 含义:包含
/etc/ssh/sshd_config.d/
目录下所有以.conf
结尾的配置文件。这允许将配置分散到多个文件中,便于管理和维护。 - 作用:使得配置文件更加模块化,方便在不同场景下添加或修改配置。
2. PermitRootLogin yes
#
- 含义:允许 root 用户通过 SSH 登录。
- 作用:如果设置为
yes
,root 用户可以使用密码或密钥登录。如果设置为prohibit-password
,root 用户只能使用密钥登录,不能使用密码。如果设置为without-password
或without-password,prohibit-password
,则 root 用户不能使用密码登录,但可以使用密钥登录。如果设置为no
,则 root 用户不能通过 SSH 登录。
3. AuthorizedKeysFile .ssh/authorized_keys
#
- 含义:指定存储授权的公钥文件的路径。
- 作用:默认情况下,SSH 会在用户的
~/.ssh/authorized_keys
文件中查找授权的公钥。这个文件包含了允许登录的公钥列表。
4. PasswordAuthentication yes
#
- 含义:是否允许使用密码进行认证。
- 作用:如果设置为
yes
,允许用户使用密码登录。如果设置为no
,则禁止使用密码登录,只能使用密钥或其他认证方式。
5. PermitEmptyPasswords no
#
- 含义:是否允许空密码登录。
- 作用:如果设置为
yes
,允许使用空密码登录。如果设置为no
,则不允许空密码登录。出于安全考虑,通常建议设置为no
。
6. KbdInteractiveAuthentication yes
#
- 含义:是否允许键盘交互式认证。
- 作用:如果设置为
yes
,允许使用键盘交互式认证,如 PAM(Pluggable Authentication Modules)认证。这通常用于多因素认证。
7. UsePAM no
#
- 含义:是否使用 PAM 进行认证、账户处理和会话处理。
- 作用:如果设置为
yes
,SSH 将使用 PAM 进行认证。这允许通过 PAM 配置文件进行更复杂的认证策略,如多因素认证、账户锁定等。如果设置为no
,则不使用 PAM。
8. Subsystem sftp /usr/lib/ssh/sftp-server
#
- 含义:定义 SFTP 子系统。
- 作用:指定 SFTP 服务的路径。SFTP 是 SSH 文件传输协议,用于安全地传输文件。
/usr/lib/ssh/sftp-server
是 SFTP 服务器的默认路径。
9. Match User anoncvs
#
- 含义:匹配特定用户或用户组的配置。
- 作用:可以为特定用户或用户组设置特定的配置。例如,可以禁用某个用户的 X11 转发、TCP 转发或 TTY 分配。
10. X11Forwarding no
#
- 含义:是否启用 X11 转发。
- 作用:如果设置为
yes
,允许通过 SSH 转发 X11 图形界面。这对于远程运行图形界面应用程序很有用。如果设置为no
,则禁止 X11 转发。
11. AllowTcpForwarding yes
#
- 含义:是否允许 TCP 转发。
- 作用:如果设置为
yes
,允许通过 SSH 转发 TCP 连接。这对于设置端口转发很有用。如果设置为no
,则禁止 TCP 转发。
12. PermitTTY yes
#
- 含义:是否允许分配 TTY。
- 作用:如果设置为
yes
,允许为登录会话分配 TTY。这对于交互式 shell 会话很有用。如果设置为no
,则禁止分配 TTY,通常用于非交互式会话,如命令执行或 SFTP。
13. PrintMotd yes
#
- 含义:是否打印 motd(Message of the Day)文件。
- 作用:如果设置为
yes
,在用户登录时打印/etc/motd
文件的内容。这个文件通常包含系统公告或重要信息。
14. PrintLastLog yes
#
- 含义:是否打印上次登录信息。
- 作用:如果设置为
yes
,在用户登录时打印上次登录的时间和地点。这有助于用户了解账户的使用情况。
15. TCPKeepAlive yes
#
- 含义:是否启用 TCP 保持活动状态。
- 作用:如果设置为
yes
,SSH 会定期发送保持活动状态的包,以防止连接超时。如果设置为no
,则不发送保持活动状态的包。
16. UseDNS no
#
- 含义:是否使用 DNS 解析客户端的 IP 地址。
- 作用:如果设置为
yes
,SSH 会尝试通过 DNS 解析客户端的 IP 地址。如果设置为no
,则不进行 DNS 解析,这可以提高连接速度,尤其是在 DNS 解析较慢的情况下。
17. ClientAliveInterval 0
#
- 含义:客户端保持活动状态的间隔时间(秒)。
- 作用:如果设置为非零值,SSH 会定期发送保持活动状态的包,以防止连接超时。例如,设置为
60
表示每 60 秒发送一次保持活动状态的包。
18. ClientAliveCountMax 3
#
- 含义:在断开连接之前,未收到客户端响应的最大次数。
- 作用:如果设置为
3
,表示在连续三次未收到客户端响应后,SSH 会断开连接。这有助于自动清理死连接。
19. PidFile /run/sshd.pid
#
- 含义:指定 SSH 服务器的 PID 文件路径。
- 作用:PID 文件用于记录 SSH 服务器的进程 ID,便于管理和监控。
20. MaxStartups 10:30:100
#
- 含义:控制同时启动的未认证连接的最大数量。
- 作用:格式为
start:rate:full
,其中start
是开始拒绝新连接的未认证连接数,rate
是每个未认证连接增加的拒绝率,full
是完全拒绝新连接的未认证连接数。例如,10:30:100
表示当未认证连接数达到 10 时,每增加一个连接,拒绝率增加 30%,当未认证连接数达到 100 时,完全拒绝新连接。
21. Banner none
#
- 含义:指定登录前显示的横幅文件路径。
- 作用:如果设置为文件路径,SSH 会在用户登录前显示该文件的内容。这可以用于显示登录警告或法律声明。
22. ChrootDirectory none
#
- 含义:指定用户的 chroot 目录。
- 作用:如果设置为目录路径,用户登录后将被限制在该目录下,无法访问其他目录。这有助于提高系统的安全性。
23. VersionAddendum none
#
- 含义:在 SSH 服务器的版本字符串中添加的附加信息。
- 作用:如果设置为字符串,该字符串将添加到 SSH 服务器的版本字符串中。这可以用于自定义版本信息。
24. Subsystem sftp /usr/lib/ssh/sftp-server
#
- 含义:定义 SFTP 子系统。
- 作用:指定 SFTP 服务的路径。SFTP 是 SSH 文件传输协议,用于安全地传输文件。
/usr/lib/ssh/sftp-server
是 SFTP 服务器的默认路径。
25. Match User anoncvs
#
- 含义:匹配特定用户或用户组的配置。
- 作用:可以为特定用户或用户组设置特定的配置。例如,可以禁用某个用户的 X11 转发、TCP 转发或 TTY 分配。
这些参数的配置可以显著影响 SSH 服务器的行为和安全性。根据你的具体需求,合理配置这些参数可以提高系统的安全性和可用性。