CentOS 7 安装和配置 OpenSSH
一、
OpenSSH 是一个实现 SSH(Secure Shell)协议的开源项目,它提供了加密的网络连接工具,用于远程登录和其他网络服务,在 CentOS 7 上安装和配置 OpenSSH 可以确保安全的远程访问和管理服务器,本文将详细介绍如何在 CentOS 7 上安装、配置和优化 OpenSSH。

二、安装前准备
1. 检查系统中是否已安装 OpenSSH
- rpm qa | grep openssh
如果返回类似opensshserverx.x.xx.el7.x86_64
的结果,说明系统已经安装了 OpenSSH,如果没有安装,继续下一步。
2. 更新系统软件包
- sudo yum update y
三、安装 OpenSSH 服务器
1. 安装 OpenSSH 服务器
- sudo yum install y opensshserver
2. 启动并启用 OpenSSH 服务
- sudo systemctl start sshd
- sudo systemctl enable sshd
四、配置 OpenSSH
1. 备份现有配置文件

- sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2. 编辑配置文件/etc/ssh/sshd_config
- sudo vi /etc/ssh/sshd_config
根据需求修改以下参数:
Port: 设置 SSH 监听端口,默认为22。Port 2222
。
ListenAddress: 绑定地址,默认为0.0.0.0,表示监听所有网络接口。
PermitRootLogin: 是否允许 root 用户登录,可选值为yes
,no
,prohibitpassword
,forcedcommandsonly
,建议设置为no
以提高安全性。
PasswordAuthentication: 是否允许密码认证,可选值为yes
或no
,建议设置为no
以强制使用密钥认证。

PubkeyAuthentication: 是否启用公钥认证,建议设置为yes
。
AuthorizedKeysFile: 指定存储公钥的文件路径,默认为/home/username/.ssh/authorized_keys
。
示例配置:
- Port 2222
- ListenAddress 0.0.0.0
- PermitRootLogin no
- PasswordAuthentication no
- PubkeyAuthentication yes
- AuthorizedKeysFile /home/username/.ssh/authorized_keys
3. 重启 OpenSSH 服务使配置生效
- sudo systemctl restart sshd
五、优化 OpenSSH 安全性
1. 修改 SSH 端口号
为了提高安全性,可以将默认的 SSH 端口22改为一个不常用的端口号,编辑/etc/ssh/sshd_config
文件,找到并修改Port
参数。
2. 禁用 root 用户登录
编辑/etc/ssh/sshd_config
文件,找到并修改PermitRootLogin
参数:
- PermitRootLogin no
3. 禁止密码认证,强制使用密钥认证
编辑/etc/ssh/sshd_config
文件,找到并修改以下参数:
- PasswordAuthentication no
- ChallengeResponseAuthentication no
- UsePAM no
4. 配置防火墙放行新端口
如果更改了 SSH 端口号,需要配置防火墙放行新的端口号:
- sudo firewallcmd permanent addport=2222/tcp
- sudo firewallcmd reload
5. 设置防火墙允许特定IP或子网访问
- sudo firewallcmd permanent addrichrule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="2222" accept'
- sudo firewallcmd reload
六、测试 OpenSSH 配置
1. 使用本地终端测试连接
- ssh p 2222 localhost
2. 使用远程机器测试连接
在远程机器上打开终端,输入以下命令进行连接:
- ssh p 2222 user@your_server_ip
注意替换your_server_ip
为服务器的实际IP地址。
七、常见问题及解决方案
问题1:无法连接到服务器
解答:首先检查服务器上的 SSH 服务状态是否正常:
- sudo systemctl status sshd
如果服务未运行,尝试重新启动:
- sudo systemctl restart sshd
然后检查防火墙设置是否正确放行了端口。
问题2:密码认证失败
解答:确认/etc/ssh/sshd_config
文件中的PasswordAuthentication
参数设置为yes
,并且用户有正确的密码,建议查看服务器日志/var/log/secure
获取更多信息。
通过上述步骤,可以在 CentOS 7 上成功安装和配置 OpenSSH,确保安全的远程访问和管理服务器,优化 SSH 配置和定期更新是保持系统安全的重要措施。