CentOS 7.3 SSHD配置与优化

SSH简介
SSH(Secure Shell)是一种网络协议,用于计算机之间的安全通信和数据传输,SSH协议提供了数据加密、认证和完整性保护,广泛应用于远程登录、文件传输、远程命令执行等场景,在CentOS 7.3系统中,SSH服务由sshd守护进程提供。
sshd配置文件
sshd守护进程的配置文件位于/etc/ssh目录下,主要包括以下文件:
sshd_config:主要配置文件,包含了sshd守护进程的大部分配置项。ssh_config:客户端配置文件,用于配置客户端SSH连接。moduli:密钥交换算法参数文件。
基本配置
开启SSH服务
确保SSH服务已经安装:
sudo yum install openssh-server
启动SSH服务并设置开机自启:
sudo systemctl start sshd sudo systemctl enable sshd
- 编辑
sshd_config文件
使用文本编辑器打开sshd_config文件:

sudo nano /etc/ssh/sshd_config
以下是sshd_config文件中一些常见的配置项及其作用:
| 配置项 | 说明 |
|---|---|
| Port | SSH服务监听的端口号,默认为22。 |
| PermittedUser | 允许登录SSH的用户名。 |
| PasswordAuthentication | 是否允许使用密码认证,默认为yes。 |
| PermitRootLogin | 是否允许root用户登录,默认为no。 |
| StrictModes | 是否严格遵循文件权限,默认为yes。 |
| X11Forwarding | 是否允许X11转发,默认为no。 |
| GSSAPIAuthentication | 是否使用GSSAPI认证,默认为yes。 |
重启sshd服务
配置完成后,重启sshd服务使配置生效:
sudo systemctl restart sshd
安全优化
关闭root用户登录
将PermitRootLogin设置为no,禁止root用户通过SSH登录:
sudo nano /etc/ssh/sshd_config PermitRootLogin no
设置密码复杂度
可以使用chage命令设置密码复杂度:
sudo chage -d 0 -M 30 -m 7 -W 7 -E 0 username
-d 0:立即更改密码。-M 30:密码更改周期为30天。-m 7:密码在更改后必须至少使用7天。-W 7:密码过期前7天提示用户更改密码。-E 0:密码永久有效。
使用密钥认证

创建用户密钥对:
ssh-keygen -t rsa -b 2048
将公钥添加到远程主机的~/.ssh/authorized_keys文件中:
ssh-copy-id username@remote_host
FAQs
问题:如何查看SSH服务状态?
解答: 使用以下命令查看SSH服务状态:
sudo systemctl status sshd
问题:如何禁用密码认证,仅使用密钥认证?
解答: 在
sshd_config文件中,将PasswordAuthentication设置为no,然后重启sshd服务:sudo nano /etc/ssh/sshd_config PasswordAuthentication no sudo systemctl restart sshd

