目录

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

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

相关文章

n8n AI资讯聚合与分发自动化教程:从数据获取到微信与Notion集成

引言 n8n简介:自动化工作流利器 n8n是一款功能强大的开源自动化工具,采用独特的“公平代码”(Fair-Code)许可模式,旨在帮助用户连接各种应用程序和服务,从而实现工作流的自动化。它通过直观的可视化界面&am…

递归查询美国加速-技术演进与行业应用深度解析

在当今数据驱动的时代,递归查询已成为处理层级数据的核心技术,尤其在美国科技领域获得广泛应用。本文将深入解析递归查询在美国加速发展的关键因素,包括技术演进、行业应用场景以及性能优化策略,帮助读者全面理解这一重要技术趋势…

【AIGC专栏】WebUI实现图片的缩放

图片的缩放包含如下的各类不同的缩放模型。 Lanczos Lanczos重采样是一种数学上精确的方法,用于图像放大或缩小。它使用了一种称为 sinc 函数的数学公式,可以在保留图像细节的同时减少锯齿效应。 Nearest 最近邻插值是一种简单的图像放大方法,通过复制最近的像素值来填充新…

Libevent(4)之使用教程(3)配置

Libevent(4)之使用教程(3)配置事件 Author: Once Day Date: 2025年7月27日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 本文档翻译于:Fast portable non-bl…

若依前后端分离版学习笔记(三)——表结构介绍

前言: 这一节将ruoyi框架中数据库中的表结构过一遍,查看都有哪些表及其表结构及关联关系,为后续代码学习做准备。 一 代码生成表记录代码生成的业务表及相关字段1 代码生成业务表 CREATE TABLE gen_table (table_id bigint(20) NOT NULL AUTO…

NFS服务安装与使用

概述 内网需要使用NFS服务挂载到其他服务器,用做数据备份使用。 安装 # Centos yum install -y nfs-utils # Ubuntu apt install nfs-common配置 # 编辑 vim /etc/exports # 输入内容 /public/KOL-ESbackup 172.29.1.0/24 192.168.8.63 192.168.8.64 192.168.8.65(r…

使用adb 发送广播 动态改变app内的值

前言 在开发过程中有时候我们需要做一些调试工作。可以通过adb发送广播实现。 广播注册 注意最后一个参数,Context.RECEIVER_EXPORTED 这是Android 34以后强制要求的,方便外部发送这个广播。否则会报错val filter IntentFilter()filter.addAction("…

【Web安全】逻辑漏洞之URL跳转漏洞:原理、场景与防御

文章目录前言一、漏洞本质二、攻击原理正常跳转流程漏洞触发流程三、抓包的关键时机:跳转参数生成时四、风险场景1.登录/注册后跳转2.退出登录跳转3.分享/广告链接跳转4.密码重置链接跳转五、漏洞挖掘:怎么找到这种漏洞?1.找到跳转参数2.篡改…

新手开发 App,容易陷入哪些误区?

新手开发 App 时,常因对流程和用户需求理解不足陷入误区,不仅拖慢进度,还可能导致产品无人问津。​功能堆砌是最常见的陷阱。不少新手总想 “一步到位”,在初期版本就加入十几项功能,比如做社区团购 App 时&#xff0c…

Linux学习篇11——Linux软件包管理利器:RPM与YUM详解与实战指南,包含如何配置失效的YUM镜像地址

引言 本文主要梳理 Linux 系统中的软件包的概念,同时介绍RPM与YUM两大核心管理工具的常用指令、区别联系以及实战技巧等。本文作为作者学习Linux系统的第11篇文章,依旧旨在总结当前的学习内容,同时巩固知识以便日后的学习复习回顾。如有说的…

Vue3+ElementPlus实现可拖拽/吸附/搜索/收起展开的浮动菜单组件

在开发后台管理系统时,我们经常会用到浮动菜单来快速访问某些功能。本篇文章将分享一个基于 Vue3 ElementPlus 实现的浮动菜单组件,支持拖拽移动、边缘吸附、二级菜单展开、菜单搜索过滤、视频弹窗等交互效果,极大提升了用户操作的便捷性与美…

CSS 盒子模型学习版的理解

文章目录一、盒子模型构建流程(一句话抓关键)二、核心逻辑提炼三、代码验证四、一句话总结流程通过手绘图示,清晰拆解 Content(内容)→ Padding(内边距)→ Border(边框)→…

解决线程安全的几个方法

线程安全:线程安全问题的发现与解决-CSDN博客 Java中所使用的并发机制依赖于JVM的实现和CPU的指令。 所以了解并掌握深入Java并发编程基础的前提知识是熟悉JVM的实现了解CPU的指令。 1.volatile简介 在多线程并发编程中,有两个重要的关键字&#xff1a…

大模型应用班-第2课 DeepSeek使用与提示词工程课程重点 学习ollama 安装 用deepseek-r1:1.5b 分析PDF 内容

DeepSeek使用与提示词工程课程重点Homework:ollama 安装 用deepseek-r1:1.5b 分析PDF 内容python 代码建构:1.小模型 1.5b 可以在 笔记本上快速执行2.分析结果还不错3. 重点是提示词 prompt 的写法一、DeepSeek模型创新与特点1. DeepSeek-V3模型特点采用…

在FreeBSD系统下使用llama-cpp运行飞桨开源大模型Ernie4.5 0.3B(失败)

先上结论,截止到目前2025.7.25日,还不能用。也就是Ernie4.5模型无法在llama.cpp 和Ollama上进行推理,原因主要就llama是不支持Ernie4.5异构MoE架构。 不局限于FreeBSD系统,Windows也测试失败,理论上Ubuntu下也是不行。…

OpenCV图像梯度、边缘检测、轮廓绘制、凸包检测大合集

一、图像梯度 在图像处理中,「梯度(Gradient)」是一个非常基础但又极其重要的概念。它是图像边缘检测、特征提取、纹理分析等众多任务的核心。梯度的本质是在空间上描述像素灰度值变化的快慢和方向。 但我们如何在图像中计算梯度?…

GitHub 趋势日报 (2025年07月25日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图1814Resume-Matcher985neko714Qwen3-Coder622OpenBB542BillionMail486hrms219hyper…

编程语言Java——核心技术篇(五)IO流:数据洪流中的航道设计

🌟 你好,我是 励志成为糕手 ! 🌌 在代码的宇宙中,我是那个追逐优雅与性能的星际旅人。 ✨ 每一行代码都是我种下的星光,在逻辑的土壤里生长成璀璨的银河; 🛠️ 每一个算法都是我绘制…

基于FPGA的16QAM软解调+卷积编码Viterbi译码通信系统,包含帧同步,信道,误码统计,可设置SNR

目录 1.引言 2.算法仿真效果 3.算法涉及理论知识概要 3.1 16QAM调制软解调原理 3.2 帧同步 3.3 卷积编码,维特比译码 4.Verilog程序接口 5.参考文献 6.完整算法代码文件获得 1.引言 基于FPGA的16QAM软解调卷积编码Viterbi译码通信系统开发,包含帧同步,高斯…

Python数据分析基础(二)

一、Numpy 常用函数分类概览函数类别常用函数基本数学函数np.sum(x)、np.sqrt(x)、np.exp(x)、np.log(x)、np.sin(x)、np.abs(x)、np.power(a, b)、np.round(x, n) 等统计函数np.mean(x)、np.median(x)、np.std(x)、np.var(x)、np.min(x)、np.max(x)、np.percentile(x, q) 等比…