Linux 远程连接与文件传输:从基础到高级配置
在 Linux 系统管理中,远程连接和文件传输是核心技能。SSH 协议提供了安全的远程访问方式,而基于 SSH 的 SFTP 和 SCP 则解决了跨服务器文件传输的需求。下面将详细解析 SSH 服务配置、三种远程操作方式的使用及密钥认证的配置过程
一、SSH 服务基础配置与管理
SSH 服务是 Linux 远程管理的基石,配置和启动步骤如下:
1. 挂载光驱获取软件源(如使用本地 ISO 镜像)
mount /dev/cdrom /mnt # 挂载光驱到/mnt目录
2. 安装 SSH 服务端
yum -y install openssh openssh-clients # 安装SSH服务端和客户端
3. 管理 SSH 服务
systemctl restart sshd # 重启SSH服务
systemctl enable sshd # 设置开机自启
systemctl status sshd # 查看服务状态(检查是否正常运行)
二、SSH 远程连接:三种方式对比与使用
SSH 提供了三种远程操作方式,适用于不同场景:
工具 | 协议 | 主要功能 | 适用场景 | 典型命令 |
---|---|---|---|---|
SSH | SSH | 远程命令执行、交互式 Shell | 系统管理、执行命令 | ssh 用户名@服务器IP |
SFTP | SSH | 交互式文件传输(上传 / 下载) | 交互式文件操作 | sftp 用户名@服务器IP put 本地文件 远程目录 get 远程文件 本地目录 |
SCP | SSH | 非交互式文件传输(一次性操作) | 脚本自动化、批量传输 | scp 本地文件 用户名@服务器IP:远程目录 scp 用户名@服务器IP:远程文件 本地目录 |
三、SSH 远程连接详解
1. 基础连接命令
ssh root@172.25.0.183 # 以root用户连接到指定IP的服务器
2. 图形化界面远程调用
ssh -X root@172.25.0.183 # -X参数启用X11转发,可远程运行图形化程序
3. SSH 协议工作原理(技术细节)
SSH 协议包含三个核心子协议:
- 连接协议:负责建立和管理客户端与服务器的连接
- 用户认证协议:验证用户身份(密码认证或密钥认证)
- 传输协议:加密数据传输,确保安全性
SSH 连接建立的五个阶段:
- 版本协商:客户端与服务器交换支持的 SSH 版本
- 密钥和算法协商:确定加密算法和会话密钥
- 用户认证:验证用户身份
- 会话请求:请求交互式 Shell 或其他服务
- 交互会话:建立安全通道,传输命令和输出
四、SFTP 文件传输详解
1. 连接与基本操作
sftp root@172.25.0.183 # 连接到服务器,进入SFTP交互式环境
2. 上传与下载命令
put /tmp/aa /var # 上传本地/tmp/aa文件到服务器/var目录
get /tmp/cc /var # 下载服务器/tmp/cc文件到本地/var目录
3. SFTP 常用命令(交互式环境)
命令 | 作用 |
---|---|
ls | 查看远程服务器文件列表 |
lls | 查看本地文件列表 |
cd 目录 | 切换远程目录 |
lcd 目录 | 切换本地目录 |
mkdir 目录 | 创建远程目录 |
rm 文件名 | 删除远程文件 |
exit | 退出 SFTP 会话 |
五、SCP 文件传输详解
1. 上传文件
scp /tmp/aa root@172.25.0.183:/var # 上传本地/tmp/aa到服务器/var目录
2. 下载文件
scp root@172.25.0.183:/tmp/cc /var # 下载服务器/tmp/cc到本地/var目录
3. 高级用法:递归复制目录
scp -r /tmp/dir root@172.25.0.183:/var # 递归上传本地目录到服务器
scp -r root@172.25.0.183:/tmp/dir /var # 递归下载服务器目录到本地
六、SSH 密钥认证配置(免密码登录)
密钥认证比密码认证更安全,适合自动化脚本和频繁登录场景。配置步骤如下:
1. 在客户端生成密钥对
ssh-keygen # 生成密钥对(默认生成id_rsa私钥和id_rsa.pub公钥)
- 按提示操作,可直接回车使用默认选项
- 密钥对默认保存在
~/.ssh/
目录下
2. 将公钥上传到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.25.0.183 # 上传公钥到服务器
- 此命令会将公钥添加到服务器的
~/.ssh/authorized_keys
文件中 - 上传后,服务器会自动配置正确的文件权限
3. 验证密钥认证
ssh root@172.25.0.183 # 尝试连接,应无需密码直接登录
4. 密钥认证原理
- 客户端生成密钥对(私钥保留在本地,公钥分发到服务器)
- 登录时,服务器向客户端发送挑战
- 客户端使用私钥加密挑战并返回
- 服务器使用存储的公钥解密验证,确认客户端身份
七、常见问题与解决方法
- SSH 连接被拒绝
- 检查服务器 SSH 服务是否运行:
systemctl status sshd
- 检查防火墙是否开放 22 端口:
firewall-cmd --zone=public --permanent --add-port=22/tcp
- 检查服务器 SSH 服务是否运行:
- SFTP/SCP 无法上传下载
- 检查目录权限:确保目标目录有写入权限
- 检查 SELinux 状态:临时关闭测试:
setenforce 0
- 密钥认证失败
- 检查密钥文件权限:
~/.ssh
目录应为 700,私钥文件应为 600 - 检查
~/.ssh/authorized_keys
文件权限和内容
- 检查密钥文件权限:
- X11 转发失败
- 确保服务器
sshd_config
中启用 X11 转发:X11Forwarding yes
- 客户端安装 X 服务器(如 Xming for Windows)
- 确保服务器
八、安全增强建议
-
修改 SSH 默认端口(提高安全性,减少被扫描概率)
vim /etc/ssh/sshd_config # 编辑配置文件 Port 2222 # 修改Port为非22端口 systemctl restart sshd # 重启服务生效
-
禁用 root 直接登录
vim /etc/ssh/sshd_config PermitRootLogin no # 禁止root登录
-
限制可登录用户
vim /etc/ssh/sshd_config AllowUsers user1 user2 # 只允许user1和user2登录
-
启用防火墙限制 SSH 访问
firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept' firewall-cmd --reload
此配置仅允许 192.168.1.0/24 网段的 IP 访问 SSH 服务
掌握 SSH 远程连接和文件传输是 Linux 系统管理的基础技能。通过合理配置 SSH 服务、灵活使用 SSH/SFTP/SCP 工具,以及正确设置密钥认证,可以高效、安全地管理远程服务器。遇到问题时,结合日志文件(/var/log/secure)和配置检查,能快速定位并解决问题