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

发布于:2025-07-29 ⋅ 阅读:(15) ⋅ 点赞:(0)

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 协议包含三个核心子协议:

  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)和配置检查,能快速定位并解决问题


网站公告

今日签到

点亮在社区的每一天
去签到