SSH(Secure Shell)是一种加密网络协议,它可以在不安全的网络中为网络服务提供安全的数据传输以及远程登录终端进行管理。在CentOS中,通过配置SSH并进行安全设置,可以提高系统的安全性。
一、安装和启动SSH服务
1、安装ssh-server包:
sudo yum install openssh-server
2、启动SSH服务:
sudo systemctl start sshd.service
3、设置SSH服务开机自启:
sudo systemctl enable sshd.service
二、配置SSH服务
1、修改SSH端口号
为了防止常用的22端口被攻击者利用,建议修改SSH的默认端口号。修改方法如下:
1)编辑SSH配置文件:
sudo vi /etc/ssh/sshd_config
2)找到“#Port 22”这一行,去掉行首井号并修改为其它不冲突的端口号(如:2233):
Port 2233
3)保存修改后的配置文件并重启ssh服务:
sudo systemctl restart sshd.service
2、禁止root用户登录
为了加强SSH服务的安全性,建议禁止使用root用户直接登录SSH。修改方法如下:
1)编辑SSH配置文件:
sudo vi /etc/ssh/sshd_config
2)找到“#PermitRootLogin yes”这一行,去掉行首井号并修改为“PermitRootLogin no”:
PermitRootLogin no
3)保存修改后的配置文件并重启ssh服务:
sudo systemctl restart sshd.service
三、SSH登录安全设置
为了增强SSH登录的安全性,可以采用一些方法来防止未经授权的用户登录系统。
1、使用公钥认证登录SSH
使用公钥认证可以有效地防止SSH登录被黑客攻击,这里以在本地生成RSA公钥和私钥为例进行介绍:
1)在本地生成RSA公钥和私钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
2)在服务器上创建新用户并添加公钥:
sudo adduser newuser
sudo mkdir /home/newuser/.ssh
sudo chmod 700 /home/newuser/.ssh
sudo touch /home/newuser/.ssh/authorized_keys
sudo chmod 600 /home/newuser/.ssh/authorized_keys
将本地的公钥文件~/.ssh/id_rsa.pub复制到服务器的/home/newuser/.ssh/authorized_keys文件中:
scp ~/.ssh/id_rsa.pub newuser@your_server_ip:/home/newuser/.ssh/authorized_keys
3)修改SSH配置文件,启用公钥认证:
找到“#PubkeyAuthentication yes”这一行,去掉行首井号并修改为“PubkeyAuthentication yes”:
PubkeyAuthentication yes
4)保存修改后的配置文件并重启ssh服务:
sudo systemctl restart sshd.service
2、使用密码登录SSH
如果不能使用公钥认证或者希望同时使用密码认证和公钥认证,则需要设置密码登录SSH时强制要求使用复杂密码。
在SSH配置文件中,找到“#PasswordAuthentication yes”这一行,去掉行首井号并修改为“PasswordAuthentication yes”:
PasswordAuthentication yes
然后在同一文件中找到“#PermitEmptyPasswords no”这一行,去掉行首井号并修改为“PermitEmptyPasswords no”:
PermitEmptyPasswords no
最后重启ssh服务:
sudo systemctl restart sshd.service
四、SSH故障解决
1、SSH连接被拒绝
可能原因是ssh服务没有开启或者被防火墙拦截了请求。可以通过以下命令检查ssh服务是否在运行:
sudo systemctl status sshd
如果出现“active (running)”字样,则说明ssh服务在运行。
解决方法:
1)如果ssh服务没有运行,则需要启动ssh服务:
sudo systemctl start sshd.service
2)如果ssh服务已经启动但是无法连接,则可能被防火墙拦截了请求:
使用以下命令检查防火墙是否开启:
sudo firewall-cmd --state
如果状态为“running”说明防火墙已经开启,可以通过添加策略来放行ssh请求:
sudo firewall-cmd --permanent --add-service=ssh
然后重启防火墙:
sudo firewall-cmd --reload
2、SSH登录速度较慢
这个问题可能是由于DNS反向解析造成的,如果服务器不能正确地解析客户端的DNS信息,则登录速度会变得非常慢。
解决方法如下:
在SSH配置文件中找到“#UseDNS yes”这一行,去掉行首井号并修改为“UseDNS no”:
UseDNS no
保存修改后的配置文件并重启ssh服务:
sudo systemctl restart sshd.service
总结
通过对CentOS SSH服务配置和安全的设置,可以有效地提高系统的安全性。具体方法包括安装和启动SSH服务,修改SSH端口号、禁止root用户登录,使用公钥认证登录SSH、使用密码登录SSH等。同时,还需要注意解决SSH故障,如SSH连接被拒绝、SSH登录速度较慢等问题。