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.pswp.cn/news/916620.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916620.shtml
英文地址,请注明出处:http://en.pswp.cn/news/916620.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

17. 如何修改 flex 主轴方向

总结 flex-direction: row | row-reverse | column | column-reverse;一、作用说明 在 Flex 布局中,默认的主轴(main axis)方向是 水平向右(即 row)。 通过设置 flex-direction 属性,可以灵活改变主轴的方向…

【Linux】重生之从零开始学习运维之mysql用户管理

mariadb用户管理创建用户create user test210.0.0.% identified by 123456;用户改名rename user test210.0.0.% to test310.0.0.%;用户删除 drop user test310.0.0.%;mysql用户管理创建用户create user test210.0.0.% identified by 123456;用户改名rename user test210.0.0.% …

matlab小计

3.变量命名_哔哩哔哩_bilibili clc 清空页面 文件名:字母开头 clc:清除命令行窗口 clear all:清除工作区变量 编译器里面 %%注释 24 2-4 2*4 4/2 cumsum累计和 312 6123 movsum:滑窗计算数值 eg步长是3 1236 2349 6 9 ... 按列求最大值 先列…

getdents64系统调用及示例

getdents64 函数详解 1. 函数介绍 getdents64 是 Linux 系统中用于读取目录内容的底层系统调用。可以把这个函数想象成一个"目录内容扫描仪"——它能够高效地扫描目录中的所有文件和子目录,就像超市的扫描枪快速读取商品条码一样。 与高级的目录操作函数(如 rea…

HBuilder X打包发布微信小程序

一、获取AppId 二、获取微信小程序AppId 三、发行->微信小程序,调起微信开发者工具 四、点击上传,上传至微信公众平台 五、微信公众平台查看版本管理 完结!!!

docker排查OOM

思路: 1.先从代码程序上排查,线程池创建是否使用ThreadPoolExecutor,线程池各项设置是否合理。 任务对象是否释放,网关是否需要限流。 2.服务器内存大小,cpu使用率,存储空间大小,java程序启动…

Web后端进阶:springboot原理(面试多问)

1.配置优先级 3种配置文件: application.properties server.port8081application.yml server:port: 8082application.yaml server:port: 80822种外部属性的配置(Java系统属性、命令行参数): Java系统属性配置 (格式: -Dkeyvalue) -Dserver.po…

第十天:字符菱形

每日一道C题&#xff1a;字符菱形 问题&#xff1a;给定一个字符&#xff0c;用它构造一个对角线长5个字符&#xff0c;倾斜放置的菱形。 要求&#xff1a;输入只有一行&#xff0c; 包含一个字符&#xff1b;输出该字符构成的菱形。 最基础的做法&#xff1a; #include <io…

Qt 多线程编程最佳实践

在现代软件开发中&#xff0c;多线程编程是提升应用性能和响应性的关键技术。Qt 作为一个强大的跨平台框架&#xff0c;提供了丰富的多线程支持&#xff0c;包括 QThread、QtConcurrent、信号槽机制等。本文将深入探讨 Qt 多线程编程的最佳实践&#xff0c;帮助开发者避免常见陷…

Photo Studio PRO 安卓版:专业级照片编辑的移动解决方案

Photo Studio PRO 安卓版是一款功能强大的专业级照片编辑应用&#xff0c;旨在为用户提供丰富而强大的编辑工具和特效&#xff0c;帮助用户轻松地对照片进行美化和修饰。无论是摄影爱好者还是专业摄影师&#xff0c;都能通过这款应用实现从基础调整到高级合成的全流程编辑。 核…

2025高考志愿怎么填?张雪峰最新“保底”推荐来了!这4个专业专科也能拿高薪,毕业不愁!

专业选得好&#xff0c;就业跑不了&#xff01;2025年高考落幕&#xff0c;现在是决战未来的关键时刻&#xff0c;选专业比选学校更重要&#xff01; 今天&#xff0c;学长就根据张雪峰老师多次力荐、再结合2024年就业大数据&#xff0c;给大家盘点4个紧缺人才专业&#xff0c…

C++初学者4——标准数据类型

先导&#xff1a; 目录 一、整形 二、浮点型 &#xff01;保留指定小数位数 三、布尔类型 关系运算 逻辑运算 ​C逻辑运算四句口诀​ 四、字符型 ASCll码 C中的字符表示 字符比较 ASCII中的常用转换 大小写转换 转换成0~25 五、数据类型隐式转换 ​1. 隐式转…

HCIP的MGRE综合实验1

拓扑图&#xff1a;二、实验要求 1、R5为ISP&#xff0c;只能进行IP地址配置&#xff0c;其所有地址均配为公有Ip地址;2、R1和R5间使用PPP的PAP认证&#xff0c;R5为主认证方&#xff1b;R2与R5之间使用PPP的CHAP认证&#xff0c;R5为主认证方;R3与R5之间使用HDLC封装;3、R2、R…

Go语言实战案例-链表的实现与遍历

在数据结构的世界中&#xff0c;链表&#xff08;Linked List&#xff09; 是一种经典的线性结构&#xff0c;它以灵活的插入与删除能力著称。链表不像数组那样需要连续的内存空间&#xff0c;而是通过节点指针连接形成一条“链”。本篇我们将使用 Go 语言实现一个单向链表&…

C++常见的仿函数,预定义函数,functor,二元操作函数(对vector操作,加减乘除取余位运算等 )

C 标准库在 <functional> 头文件中为我们提供了一套非常方便的预定义函数对象&#xff08;也称为“仿函数”或 “functor”&#xff09;&#xff0c;它们可以像变量一样直接传递给 std::reduce 和其他标准算法。 你提到的 std::bit_or 和 std::multiplies 就是其中的成员…

【RH134 问答题】第 6 章 管理 SELinux 安全性

目录SELinux 是如何保护资源的&#xff1f;什么是自由决定的访问控制(DAC)&#xff1f;它有什么特点&#xff1f;什么是强制访问控制(MAC)&#xff1f;它有什么特点&#xff1f;什么是 SELinux 上下文&#xff1f;setenforce 0 命令的作用是什么&#xff1f;定义一条 SELinux 文…

【MacOS】发展历程

很高兴为您详细介绍 macOS 的详细发展历程。macOS 是苹果公司开发的操作系统&#xff0c;用于 Mac 电脑、iPad 和 Apple TV 等设备。以下是 macos 的主要版本和发展历程&#xff1a;1. System 7 (1991)发布日期&#xff1a;1991年特点&#xff1a;引入多任务处理功能。改进了拖…

智慧社区项目开发(二)——基于 JWT 的登录验证功能实现详解

在 Web 应用中&#xff0c;登录验证是保障系统安全的核心环节。本文将结合具体接口文档&#xff0c;详细讲解如何基于 JWT&#xff08;JSON Web Token&#xff09;实现登录验证功能&#xff0c;包括 JWT 配置、工具类封装、登录流程处理等关键步骤&#xff0c;帮助开发者快速理…

Jmeter的元件使用介绍:(七)后置处理器详解

Jmeter的后置处理器主要用于取样器执行后的提取数据操作。 Jmeter常用的后置处理器有:Json提取器、正则表达式提取器、边界提取器、Beanshell后置处理器。此外还有Xpath提取器、CSS选择器提取器等&#xff0c;由于这两项多用前端页面提取元素&#xff0c;目前的项目基本都是采…

Allure的安装,在Pytest中的简单使用以及生成测试报告

目录 1.Allure的安装 1--下载网址 2--选择对应系统版本下载 3--配置Allure环境变量 4--验证安装是否成功 5--配置JAVAJDK的环境变量&#xff08;如果已经配置&#xff0c;可以忽视这一步&#xff09; 2.python中pytestAllure 1--python安装Allure包 2--生成测试报告 1--使用pyt…