当前位置: 首页 > news >正文

Linux 远程连接与文件传输:从基础到高级配置

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 提供了三种远程操作方式,适用于不同场景:

工具协议主要功能适用场景典型命令
SSHSSH远程命令执行、交互式 Shell系统管理、执行命令ssh 用户名@服务器IP
SFTPSSH交互式文件传输(上传 / 下载)交互式文件操作sftp 用户名@服务器IP put 本地文件 远程目录 get 远程文件 本地目录
SCPSSH非交互式文件传输(一次性操作)脚本自动化、批量传输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 协议包含三个核心子协议:

  1. 连接协议:负责建立和管理客户端与服务器的连接
  2. 用户认证协议:验证用户身份(密码认证或密钥认证)
  3. 传输协议:加密数据传输,确保安全性

SSH 连接建立的五个阶段:

  1. 版本协商:客户端与服务器交换支持的 SSH 版本
  2. 密钥和算法协商:确定加密算法和会话密钥
  3. 用户认证:验证用户身份
  4. 会话请求:请求交互式 Shell 或其他服务
  5. 交互会话:建立安全通道,传输命令和输出

四、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. 密钥认证原理
  • 客户端生成密钥对(私钥保留在本地,公钥分发到服务器)
  • 登录时,服务器向客户端发送挑战
  • 客户端使用私钥加密挑战并返回
  • 服务器使用存储的公钥解密验证,确认客户端身份

七、常见问题与解决方法

  1. SSH 连接被拒绝
    • 检查服务器 SSH 服务是否运行:systemctl status sshd
    • 检查防火墙是否开放 22 端口:firewall-cmd --zone=public --permanent --add-port=22/tcp
  2. SFTP/SCP 无法上传下载
    • 检查目录权限:确保目标目录有写入权限
    • 检查 SELinux 状态:临时关闭测试:setenforce 0
  3. 密钥认证失败
    • 检查密钥文件权限:~/.ssh目录应为 700,私钥文件应为 600
    • 检查~/.ssh/authorized_keys文件权限和内容
  4. X11 转发失败
    • 确保服务器sshd_config中启用 X11 转发:X11Forwarding yes
    • 客户端安装 X 服务器(如 Xming for Windows)

八、安全增强建议

  1. 修改 SSH 默认端口(提高安全性,减少被扫描概率)

    vim /etc/ssh/sshd_config  # 编辑配置文件
    Port 2222                 # 修改Port为非22端口
    systemctl restart sshd    # 重启服务生效
    
  2. 禁用 root 直接登录

    vim /etc/ssh/sshd_config
    PermitRootLogin no        # 禁止root登录
    
  3. 限制可登录用户

    vim /etc/ssh/sshd_config
    AllowUsers user1 user2    # 只允许user1和user2登录
    
  4. 启用防火墙限制 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)和配置检查,能快速定位并解决问题

http://www.dtcms.com/a/303155.html

相关文章:

  • QT之QThread 与 QtConcurrent
  • 【自动化运维神器Ansible】Ansible常用模块之cron模块详解
  • GaussDB as的用法
  • 【GaussDB】内存资源告急:深度诊断一起“memory temporarily unavailable“故障
  • DMETL安装流程及简单使用
  • OpenLayers 入门指南【四】:项目初始化
  • Qt小组件 - 8 图片浏览器
  • MySQL高级配置与优化实战指南
  • 利用 SQL Server 实现字符替换的高效函数
  • 第二十一天(shell练习)
  • IT运维的365天--033 跨交换机部署没有单独供电口的爱快AP到另一个地方去
  • 如何选择适合高并发环境的服务器:性能与稳定性的平衡
  • 短剧小程序系统开发:连接创作者与用户的桥梁
  • Node.js + TypeScript 开发健壮的淘宝商品 API SDK
  • 2025年07月23日秋瑶传媒一面
  • 【学习路线】AI开发工程师成长指南:从机器学习基础到大模型应用
  • 调色总监的“色彩炼金术”:在PS中创建LUT,并应用于Premiere Pro视频
  • TCP/IP 网际层详解
  • RCLAMP2574N.TCT Semtech:超低钳位TVS二极管 0.5pF超低电容+±30kV超强防护
  • 【Blender小技巧】Blender使用多边形建形工具创建多边形模型,挤出面,模型创建修改编辑UV贴图
  • PostgreSQL 与 MySQL 时间类型避坑指南
  • 《Ai智能眼镜的市场定义及用户分析》- 深圳市天趣星空科技有限公司 CEO 王洁
  • Java字符串详解
  • Entity Framework Core (EF Core) 使用ado.net
  • 用latex+vscode+ctex写毕业论文
  • Spring源码解读之 JdbcTemplate源码
  • 【基础篇三】WebSocket:实时通信的革命
  • 基于DeepSeek大模型和STM32的矿井“围压-温度-开采扰动“三位一体智能监测系统设计
  • 排序算法 (Sorting Algorithms)-JS示例
  • 安装及使用vscode