CentOS SSH 配置指南
一、SSH简介
SSH(Secure Shell)是一种加密的网络传输协议,主要用于远程登录和管理计算机系统,它通过加密技术保障数据传输的安全性,防止中间人攻击和窃听,CentOS默认安装并启用了OpenSSH服务器,但用户可以根据需要对其进行详细配置。
二、开启SSH服务
1. 安装SSH服务
如果尚未安装SSH服务,可以使用以下命令进行安装:
sudo yum install y opensshserver
2. 启动SSH服务
使用以下命令启动SSH服务:
sudo systemctl start sshd
3. 设置SSH服务开机自启
为了确保每次系统重启后SSH服务自动启动,可以执行以下命令:
sudo systemctl enable sshd
4. 检查SSH服务状态
可以使用以下命令查看SSH服务的状态:
sudo systemctl status sshd
通过该命令,可以看到Active状态是否为active (running),以及最近的几条链接信息。
三、查询与更改SSH端口
1. 查询当前SSH端口
默认情况下,SSH服务运行在22号端口,可以通过以下命令查询当前的SSH端口:
sudo netstat anp | grep ssh
或者查看配置文件:
sudo cat /etc/ssh/sshd_config | grep Port
2. 更改SSH端口
为了增加安全性,建议更改默认的SSH端口,使用文本编辑器(如vi)打开配置文件:
sudo vi /etc/ssh/sshd_config
找到并修改Port
行,去掉注释并将22改为新的端口号(例如55555):
Port 55555
保存并关闭文件后,重启SSH服务使更改生效:
sudo systemctl restart sshd
3. 确保新端口通过防火墙
如果服务器启用了防火墙,请确保新的SSH端口已开放:
sudo firewallcmd permanent zone=public addport=55555/tcp sudo firewallcmd reload
四、其他高级配置
1. 禁用Root远程登录
出于安全考虑,可以禁止root用户通过SSH远程登录,编辑/etc/ssh/sshd_config
文件,将PermitRootLogin设置为no:
PermitRootLogin no
2. 允许特定用户登录
可以通过AllowUsers指令限制只有特定用户可以登录:
AllowUsers user1 user2
3. 禁用密码认证,使用密钥认证
为了提高安全性,建议使用密钥认证而不是密码认证,首先生成密钥对:
sshkeygen t rsa
然后将公钥追加到目标服务器的~/.ssh/authorized_keys
文件中:
cat ~/.ssh/id_rsa.pub | ssh user@remote_host 'cat >> ~/.ssh/authorized_keys'
修改配置文件禁用密码认证:
PasswordAuthentication no
4. 限制登录IP范围
可以通过Match指令限制某些用户只能从特定IP地址或IP段登录,只允许user1从192.168.1.0/24网段登录:
Match Address 192.168.1.0/24 AllowUsers user1
5. 监控与日志记录
为了监控系统中的异常活动,可以启用详细的日志记录,编辑/etc/ssh/sshd_config
文件,设置SyslogFacility为AUTH:
SyslogFacility AUTH
然后重启SSH服务。
五、常见问题及解决方法
Q1: 如何更改SSH端口数?
A1: 要更改SSH端口数,可以按照以下步骤操作:
1、使用文本编辑器打开配置文件/etc/ssh/sshd_config
。
2、找到Port
这一行,去掉前面的注释符号#
,并将其值改为你想要的新端口号(例如55555
)。
3、保存并关闭文件。
4、重启SSH服务以使更改生效:sudo systemctl restart sshd
。
5、如果服务器启用了防火墙,还需要确保新端口已经在防火墙中开放:sudo firewallcmd permanent zone=public addport=55555/tcp
,然后重新加载防火墙:sudo firewallcmd reload
。
Q2: 如何更改SSH登录的超时时间?
A2: 要更改SSH登录的超时时间,可以按照以下步骤操作:
1、使用文本编辑器打开配置文件/etc/ssh/sshd_config
。
2、找到ClientAliveInterval
和ClientAliveCountMax
这两行,如果它们前面有注释符号#
,则去掉注释符号。
3、设置ClientAliveInterval
为你希望的超时时间(单位为秒),例如ClientAliveInterval 300
表示每300秒发送一次心跳包。
4、设置ClientAliveCountMax
为最大失败次数,例如ClientAliveCountMax 0
表示只要超时就断开连接。
5、保存并关闭文件。
6、重启SSH服务以使更改生效:sudo systemctl restart sshd
。