SSH在CentOS中的使用详解
SSH(Secure Shell)是一种加密的网络传输协议,主要用于远程登录和管理网络设备,与Telnet等传统远程登录方式相比,SSH提供了更强的安全性,通过加密技术保护数据传输的安全,本文将详细介绍如何在CentOS系统中安装、配置和使用SSH服务,并探讨其高级功能和应用场景。
一、SSH
SSH是由IETF制定的建立在应用层和传输层基础上的安全协议,旨在为远程登录会话和其他网络服务提供安全保障,SSH通过加密所有传输的数据,防止DNS欺骗和IP欺骗,同时压缩数据以加快传输速度。
二、SSH服务的安装与启动
1. 检查是否已安装OpenSSH
大多数CentOS系统默认安装了OpenSSH软件包,可以通过以下命令检查:
rpm qa | grep E "openssh"
如果未安装,可以使用以下命令进行安装:
yum install opensshserver y
2. 启动SSH服务
安装完成后,启动SSH服务:
systemctl start sshd
设置开机自启:
systemctl enable sshd
3. 防火墙配置
确保防火墙允许SSH流量通过:
firewallcmd permanent addservice=ssh firewallcmd reload
三、建立SSH连接
1. 基于口令的安全验证
用户只需知道自己的账号和密码即可登录远程主机。
ssh username@server_ip
此方法简单但存在密码泄露风险。
2. 基于密钥的安全验证
为了提高安全性,推荐使用基于密钥的验证方式,步骤如下:
1、在客户端生成密钥对:
sshkeygen
按提示操作,通常直接回车使用默认设置。
2、将公钥复制到服务器:
sshcopyid username@server_ip
输入密码确认后,公钥将自动添加到服务器的~/.ssh/authorized_keys
文件中。
3、使用私钥登录:
ssh username@server_ip
首次登录会提示是否继续连接,输入yes
后即可免密登录。
四、SSH配置文件详解
SSH的主配置文件位于/etc/ssh/SSHD_config
,以下是一些关键参数及其说明:
参数 | 说明 |
Port | 指定SSH监听的端口号,默认为22,建议修改为不常用端口以减少被攻击的风险。 |
ListenAddress | 指定SSH服务绑定的地址,0.0.0.0表示监听所有网络接口。 |
Protocol | 指定SSH协议版本,推荐使用2以提高安全性。 |
PermitRootLogin | 是否允许root用户登录,建议设置为no以提高安全性。 |
PasswordAuthentication | 是否启用密码验证,设为yes时需配合PubkeyAuthentication 使用。 |
AuthorizedKeysFile | 指定存储公钥的文件路径,默认为.ssh/authorized_keys 。 |
AllowUsers | 允许登录的用户名列表,多个用户用空格分隔。 |
DenyUsers | 禁止登录的用户名列表,多个用户用空格分隔。 |
MaxAuthTries | 最大认证失败次数,超过次数后禁止登录。 |
示例配置文件片段:
Port 2222 ListenAddress 0.0.0.0 Protocol 2 PermitRootLogin no PasswordAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys AllowUsers username1 username2 DenyUsers invaliduser MaxAuthTries 3
保存文件后,重启SSH服务使配置生效:
systemctl restart sshd
五、修改SSH默认端口
出于安全考虑,建议修改SSH的默认端口22,编辑/etc/ssh/sshd_config
文件,找到Port
参数并修改为其他端口号(如2222),然后重启SSH服务:
systemctl restart sshd
确保防火墙开放新的端口:
firewallcmd permanent addport=2222/tcp firewallcmd reload
六、限制特定用户访问
1. 允许特定用户访问
在/etc/ssh/sshd_config
文件中,使用AllowUsers
参数指定允许登录的用户:
AllowUsers user1 user2
多个用户之间用空格分隔。
2. 禁止特定用户访问
使用DenyUsers
参数指定禁止登录的用户:
DenyUsers user3 user4
多个用户之间用空格分隔。
七、SSH文件传输
除了远程登录外,SSH还支持安全的文件传输,主要通过scp
(Secure Copy)和rsync
命令实现。
1. 使用scp命令传输文件
基本语法:
scp [选项] 源文件 目标地址
示例:将本地文件example.txt
复制到远程服务器的/home/user/
目录:
scp example.txt username@server_ip:/home/user/
反向操作(从服务器下载文件):
scp username@server_ip:/home/user/example.txt /local/path/
2. 使用rsync同步文件
rsync
是一个快速且通用的文件同步工具,适用于备份和镜像场景,基本语法:
rsync [选项] 源目录 目标地址
示例:将本地目录/home/user/data/
同步到远程服务器:
rsync avz /home/user/data/ username@server_ip:/remote/backup/
各参数说明:
a
:归档模式,递归复制并保持文件属性。
v
:详细模式,显示传输过程。
z
:压缩文件数据传输。
SSH作为一款强大的远程登录和管理工具,不仅提供了基本的远程控制功能,还通过丰富的配置选项满足了不同场景下的安全需求,在CentOS系统中,合理配置和使用SSH可以有效提升系统的安全性和管理效率,本文介绍了SSH的基本概念、安装与启动、连接方式、配置文件详解以及高级应用,希望能帮助读者更好地理解和使用SSH。
九、常见问题解答(FAQs)
Q1: 如何更改SSH的默认端口数?
A1: 编辑/etc/ssh/sshd_config
文件,找到Port
参数并修改为其他端口号(如2222),然后重启SSH服务,确保防火墙开放新的端口。
Q2: 如何只允许特定用户通过SSH访问服务器?
A2: 在/etc/ssh/sshd_config
文件中,使用AllowUsers
参数指定允许登录的用户,或使用DenyUsers
参数指定禁止登录的用户,多个用户之间用空格分隔。
AllowUsers user1 user2 DenyUsers user3 user4