在CentOS 7系统中,配置SSH(Secure Shell)是一项重要的任务,它不仅提供了安全的远程访问方式,还能通过加密传输数据来保护敏感信息,以下是关于如何在CentOS 7上安装和配置SSH的详细指南。
一、安装OpenSSH服务
1、检查是否已安装:需要确认系统是否已经安装了OpenSSH服务,可以通过以下命令查看:
rpm qa | grep openssh
如果输出中包含openssh
相关的包,则表示已安装;否则需要继续安装。
2、安装OpenSSH服务:如果未安装,可以使用以下命令进行安装:
sudo yum install y opensshserver
二、启动并配置SSH服务
1、启动SSH服务:安装完成后,需要启动SSH服务:
sudo systemctl start sshd
2、设置开机自启:为了确保每次系统重启后SSH服务都能自动启动,需要将其设置为开机自启:
sudo systemctl enable sshd
3、检查服务状态:可以通过以下命令检查SSH服务的状态,确保其正常运行:
sudo systemctl status sshd
三、配置SSH服务
1、编辑配置文件:SSH的主要配置文件位于/etc/ssh/SSHD_config
,可以使用文本编辑器(如vi或vim)打开该文件:
sudo vi /etc/ssh/sshd_config
2、常见配置选项:
Port 22:设置SSH服务的监听端口为22(默认),如果需要更改端口号,可以修改此值。
PermitRootLogin no:禁止root用户直接登录,以提高安全性,建议将此项设置为no
,然后使用普通用户登录后再切换到root用户。
PasswordAuthentication yes:启用密码认证,如果希望仅使用密钥认证,可以将此项设置为no
。
PubkeyAuthentication yes:启用公钥认证,这是推荐的认证方式,因为它比密码认证更安全。
AuthorizedKeysFile .ssh/authorized_keys:指定存储公钥的文件路径,确保该文件存在且具有正确的权限(600)。
3、保存并退出:编辑完成后,保存文件并退出编辑器。
4、重启SSH服务:为了使配置生效,需要重启SSH服务:
sudo systemctl restart sshd
四、防火墙配置
如果系统启用了防火墙(如firewalld),需要确保允许SSH流量通过防火墙,可以使用以下命令开放SSH端口(默认22):
sudo firewallcmd permanent zone=public addport=22/tcp sudo firewallcmd reload
五、生成SSH密钥对
为了使用密钥认证登录SSH服务器,需要生成一对公钥和私钥,可以在客户端机器上执行以下命令生成密钥对:
sshkeygen t rsa b 2048
按提示操作,通常会将密钥保存到~/.ssh/id_rsa
(私钥)和~/.ssh/id_rsa.pub
(公钥)。
六、将公钥复制到服务器
将公钥添加到服务器上的~/.ssh/authorized_keys
文件中,可以使用以下命令之一:
1、使用sshcopyid命令:
sshcopyid username@hostname
2、手动复制:将公钥内容复制到剪贴板,然后在服务器上执行以下命令:
echo "公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
七、测试SSH连接
现在可以尝试使用SSH连接到服务器了,在客户端机器上执行以下命令:
ssh username@hostname
如果一切正常,你应该能够成功登录到服务器,如果遇到问题,请检查上述步骤是否正确完成,特别是防火墙设置和密钥权限。
八、常见问题解答(FAQs)
1、如何更改SSH端口数?
答:编辑/etc/ssh/sshd_config
文件,找到Port
配置项,将其值更改为所需的端口号(例如2222),然后保存文件并重启SSH服务,确保防火墙允许新的端口号通过。
2、如何禁用密码登录,仅使用密钥登录?
答:在/etc/ssh/sshd_config
文件中,将PasswordAuthentication
设置为no
,确保PubkeyAuthentication
设置为yes
,并正确配置AuthorizedKeysFile
,然后重启SSH服务,这样,只有拥有正确私钥的用户才能登录服务器。