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

[Linux入门] Linux 远程访问及控制全解析:从入门到实战

目录

一、SSH 远程管理:为什么它是远程访问的首选?

1️⃣什么是 SSH?

2️⃣SSH 为什么比传统工具更安全?

3️⃣SSH 的 “三大组成部分”

4️⃣SSH 工作的 “五步流程”

5️⃣常用 SSH 工具

二、实战:构建 SSH 远程登录服务(OpenSSH)

1️⃣安装 OpenSSH

2️⃣启动 SSH 服务

3️⃣核心配置:通过 sshd_config 提高安全性

(1)服务监听选项

(2)用户登录控制

(3)登录验证方式

4️⃣密钥对验证:免密登录的实现

(1)客户端生成密钥对

(2)将公钥传到目标服务器

(3)配置服务器并测试

三、远程文件传输:scp 与 sftp 的使用

1️⃣scp:命令行快速传输

常用选项:

示例:

2️⃣sftp:交互式文件管理

(1)连接服务器:

(2)常用命令:

示例:

四、TCP Wrappers:传输层的访问控制

1️⃣什么是 TCP Wrappers?

2️⃣核心配置文件

生效规则:

3️⃣配置格式与实例

客户端地址支持的格式:

实例 1:仅允许指定 IP 访问 sshd

实例 2:允许特定网段访问,拒绝其他

五、新手必知的安全建议

总结


在 Linux 系统管理中,远程访问是一项核心技能。无论是管理服务器集群还是调试远程设备,安全高效的远程控制能力都至关重要。本文将基于 SSH 协议,从基础概念到实战配置,全面讲解 Linux 远程访问及控制的知识,适合初学者快速上手。

一、SSH 远程管理:为什么它是远程访问的首选?

1️⃣什么是 SSH?

SSH(Secure Shell)是一种安全通道协议,通过加密和认证机制实现远程登录、文件传输等操作。它最核心的价值是加密传输数据—— 包括用户口令、命令内容等,彻底解决了传统远程工具(如 Telnet、FTP)明文传输的安全隐患。

举个例子:用 Telnet 远程登录时,你的密码会像明信片一样在网络中 “裸奔”,而 SSH 会给这张 “明信片” 套上加密的 “信封”,只有目标服务器能解开。

2️⃣SSH 为什么比传统工具更安全?

  • 传统工具的问题:Telnet(远程登录)、FTP(文件传输)、RSH(远程执行命令)等均采用明文传输,数据易被窃听或篡改。
  • SSH 的优势:
    • 加密通信:所有数据通过加密算法处理,防止窃听;
    • 身份认证:支持密码、密钥等多种认证方式,确保访问者合法;
    • 完整性保护:通过 HMAC 算法验证数据,防止传输中被篡改。

3️⃣SSH 的 “三大组成部分”

SSH 协议由三个子协议构成,分工明确:

  • 传输层协议(SSH-TRANS):负责服务器认证、数据加密和完整性保护,是整个 SSH 的 “安全基础”,运行在 TCP 连接上(默认端口 22)。
  • 用户认证协议(SSH-USERAUTH):基于传输层协议,实现客户端用户的身份验证(如密码、密钥验证)。
  • 连接协议(SSH-CONNECT):将加密隧道分成多个逻辑通道,支持同时进行远程登录、命令执行、端口转发等操作。

4️⃣SSH 工作的 “五步流程”

  1. 建立连接:客户端向服务器的 22 端口发起 TCP 连接;
  2. 版本协商:双方确定使用 SSH1.X 还是 SSH2.0(推荐用 V2,安全性更高);
  3. 算法协商:约定密钥交换、对称加密、公钥等算法;
  4. 密钥交换:动态生成会话密钥和会话 ID,建立加密通道;
  5. 用户认证:客户端通过密码、密钥等方式证明身份,认证通过后即可远程操作。

5️⃣常用 SSH 工具

  • OpenSSH:开源的 SSH 实现,几乎所有 Linux 发行版默认安装,包含服务端(sshd)和客户端(ssh、scp 等)。
  • PuTTY:Windows 平台常用的 SSH 客户端,支持图形界面,适合新手操作。

二、实战:构建 SSH 远程登录服务(OpenSSH)

OpenSSH 是 Linux 系统中最常用的 SSH 工具集,分为服务端(提供远程访问功能)和客户端(连接远程服务端的工具)。下面一步步教你从安装到配置。

1️⃣安装 OpenSSH

大部分 Linux 发行版默认预装 OpenSSH,若未安装,可按以下命令操作:

系统类型安装命令
CentOS/RHELsudo yum install openssh-clients openssh-server
Ubuntu/Debiansudo apt install openssh-client openssh-server

安装后验证:

  • 查看版本:ssh -V(出现版本信息说明安装成功);
  • 检查服务状态:systemctl status sshd(显示 “active (running)” 即为运行中)。

2️⃣启动 SSH 服务

bash

# 启动服务
sudo systemctl start sshd
# 设置开机自启(推荐)
sudo systemctl enable sshd

3️⃣核心配置:通过 sshd_config 提高安全性

SSH 服务的配置文件为/etc/ssh/sshd_config,修改后需重启服务(sudo systemctl restart sshd)生效。以下是新手必知的关键配置项:

(1)服务监听选项
  • Port 22:默认端口为 22,建议修改为 1024-65535 之间的端口(如 2222),减少被扫描的风险;
  • ListenAddress 192.168.1.100:指定监听的 IP 地址(仅允许该 IP 接收 SSH 连接);
  • Protocol 2:强制使用 SSH V2 协议(比 V1 更安全);
  • UseDNS no:禁用 DNS 反向解析,提高服务器响应速度。
(2)用户登录控制
  • PermitRootLogin no:禁止 root 用户直接远程登录(强烈推荐!建议先用普通用户登录,再用su切换为 root);
  • PermitEmptyPasswords no:禁止空密码用户登录;
  • MaxAuthTries 3:最大重试次数(默认 6 次,改小可防暴力破解);
  • AllowUsers jerry admin@61.23.24.25:仅允许指定用户登录(如允许 jerry,且 admin 只能从 61.23.24.25 登录)。
(3)登录验证方式

SSH 支持两种验证方式,可单独或同时启用:

  • 密码验证:通过用户名 + 密码验证,简单但易被暴力破解;
  • 密钥对验证:通过客户端私钥和服务器公钥匹配验证,安全性极高,推荐优先使用。

配置项:

  • PubkeyAuthentication yes:启用密钥认证;
  • AuthorizedKeysFile .ssh/authorized_keys:指定存放客户端公钥的文件路径;
  • PasswordAuthentication no:(可选)禁用密码验证,仅用密钥(适合高安全场景)。

4️⃣密钥对验证:免密登录的实现

密钥对验证是 SSH 最安全的登录方式,步骤如下:

(1)客户端生成密钥对

在本地客户端(如你的电脑)执行:

bash

# 生成RSA密钥对(-t指定算法,-b指定长度,-C添加注释)
ssh-keygen -t rsa -b 4096 -C "myemail@example.com"

执行后会在~/.ssh/目录下生成两个文件:

  • id_rsa:私钥(重要!不可泄露);
  • id_rsa.pub:公钥(需传到服务器)。
(2)将公钥传到目标服务器

方法 1:用ssh-copy-id自动复制(推荐):

bash

# 替换为服务器用户名和IP
ssh-copy-id username@server_ip

输入服务器密码后,公钥会自动添加到服务器的~/.ssh/authorized_keys文件中。

方法 2:手动复制:

  1. 查看本地公钥内容:cat ~/.ssh/id_rsa.pub
  2. 登录服务器,编辑~/.ssh/authorized_keys,将公钥内容粘贴进去;
  3. 确保权限正确:chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys(权限错误会导致验证失败)。
(3)配置服务器并测试
  1. 编辑服务器/etc/ssh/sshd_config,确保:

    bash

    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    
  2. 重启服务:sudo systemctl restart sshd
  3. 客户端测试登录:ssh username@server_ip(无需输入密码,直接登录)。

三、远程文件传输:scp 与 sftp 的使用

通过 SSH 不仅能远程登录,还能安全传输文件,常用工具为scpsftp

1️⃣scp:命令行快速传输

scp(Secure Copy)基于 SSH 协议,可在本地与远程主机间复制文件 / 目录,语法:

bash

scp [选项] 源路径 目标路径
常用选项:
  • -r:递归复制目录(必须加,否则无法复制目录);
  • -P 端口号:指定 SSH 端口(默认 22,大写 P);
  • -i 密钥文件:指定私钥路径(非默认位置时使用);
  • -C:启用压缩传输(节省带宽)。
示例:
  • 本地文件上传到服务器:

    bash

    scp /local/file.txt username@server_ip:/remote/path/
    
  • 服务器文件下载到本地:

    bash

    scp username@server_ip:/remote/file.txt /local/path/
    
  • 复制目录:

    bash

    scp -r /local/dir username@server_ip:/remote/path/
    

2️⃣sftp:交互式文件管理

sftp(SSH File Transfer Protocol)提供类似 FTP 的交互式环境,适合频繁管理文件,步骤:

(1)连接服务器:

bash

# 格式:sftp [选项] 用户名@服务器IP
sftp -P 2222 username@server_ip  # -P指定端口
(2)常用命令:
  • ls:查看远程目录;
  • lcd 本地路径:切换本地目录;
  • cd 远程路径:切换远程目录;
  • get 远程文件 本地路径:下载文件;
  • put 本地文件 远程路径:上传文件;
  • exit:退出会话。
示例:

bash

# 连接后下载文件
sftp> get /remote/data.csv /local/download/
# 上传文件
sftp> put /local/report.pdf /remote/docs/

四、TCP Wrappers:传输层的访问控制

除了 SSH 自身的配置,Linux 还提供TCP Wrappers工具,在传输层对网络服务进行访问控制(类似 “黑白名单”)。

1️⃣什么是 TCP Wrappers?

它是一种工作在传输层(TCP) 的安全机制,通过 “包裹” 网络服务程序(如 sshd、vsftpd),对客户端的访问请求进行过滤。只有通过验证的请求才能访问真正的服务。

判断服务是否受其控制:用ldd命令查看服务是否依赖libwrap.so库,例如:

bash

ldd /usr/sbin/sshd | grep "libwrap"  # 若有输出,说明sshd受控制

2️⃣核心配置文件

TCP Wrappers 通过两个文件实现控制:

  • /etc/hosts.allow:允许访问的规则;
  • /etc/hosts.deny:拒绝访问的规则。
生效规则:
  1. 先检查hosts.allow,找到匹配规则则允许访问;
  2. 若未匹配,检查hosts.deny,找到匹配规则则拒绝访问;
  3. 若均无匹配,默认允许访问。

3️⃣配置格式与实例

格式:服务程序列表: 客户端地址列表(多个项用逗号分隔)。

客户端地址支持的格式:
  • 单个 IP:如192.168.1.100
  • 网段:如192.168.1.0/24192.168.1.
  • 域名:如.example.com(匹配该域下所有主机);
  • ALL:所有客户端。
实例 1:仅允许指定 IP 访问 sshd
  • 编辑/etc/hosts.allow,添加:

    bash

    sshd: 192.168.141.130  # 允许该IP访问sshd
    
  • 编辑/etc/hosts.deny,添加:

    bash

    sshd: ALL  # 拒绝其他所有IP访问sshd
    
实例 2:允许特定网段访问,拒绝其他
  • hosts.allow添加:

    bash

    sshd: 12.0.0.1, 192.168.80.*  # 允许12.0.0.1和192.168.80网段
    
  • hosts.deny添加:

    bash

    sshd: ALL  # 拒绝其他
    

五、新手必知的安全建议

  1. 禁用 root 直接登录:在sshd_config中设置PermitRootLogin no,通过普通用户 +su切换;
  2. 使用密钥认证:禁用密码认证(PasswordAuthentication no),避免暴力破解;
  3. 修改默认端口:将Port 22改为其他端口(如 2222),减少扫描风险;
  4. 限制登录来源:通过AllowUsers或 TCP Wrappers,仅允许信任的 IP 访问;
  5. 定期更新 OpenSSH:修复潜在漏洞,用yum updateapt upgrade更新。

总结

Linux 远程访问的核心是 SSH 协议,通过 OpenSSH 工具集实现安全的远程登录和文件传输。新手需掌握:

  • SSH 的基本原理和优势;
  • OpenSSH 的安装、配置(尤其是安全选项);
  • 密钥对验证的免密登录配置;
  • scp/sftp 的文件传输操作;
  • TCP Wrappers 的访问控制。
http://www.dtcms.com/a/301024.html

相关文章:

  • Jmeter的元件使用介绍:(七)后置处理器详解
  • 10.迭代器模式
  • 设计模式(二)创建型:工厂方法模式详解
  • 设计模式(十一)结构型:外观模式详解
  • rename系统调用及示例
  • docker-desktop引擎启动失败报wsl --update
  • 推荐系统学习
  • QML视图组件:ListView、GridView、TableView、PathView
  • MyBatis Plus 乐观锁与悲观锁
  • 《C++ list 完全指南:list的模拟实现》
  • NodeJs接入腾讯云存储COS
  • MySQL 用户管理
  • 第六章 JavaScript 互操(3)JS调用.NET
  • Django5.1(131)—— 表单 API二(API参考)
  • 电科金仓 KingbaseES 深度解码:技术突破・行业实践・沙龙邀约 -- 融合数据库的变革之力
  • Java面试宝典:MySQL索引
  • 2-4、Dify案例实践—基于工作流构建商城用户评价智能分析系统
  • PyTorch武侠演义 第一卷:初入江湖 第7章:矿洞中的计算禁制
  • 基于mnn架构在本地 c++运行llm与mllm模型
  • 数据结构基本内容(第四篇:队列)
  • 2025.7.27
  • Java面试题及详细答案120道之(061-080)
  • C++算法竞赛篇(六)一维数组题型讲解
  • 【工具】python汇总发票(含源码)
  • Java排序算法之<希尔排序>
  • 7月27日星期日今日早报简报微语报早读
  • GitHub 趋势日报 (2025年07月25日)
  • Linux 系统网络配置及 IP 地址相关知识汇总
  • STM32 I2C通信完整教程:从协议原理到硬件实现
  • 一文快速了解Docker和命令详解