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

【Day 17】Linux-SSH远程连接

一、服务器操作方式

(一)本地操作

        直接在服务器物理设备上进行的操作,通常需要物理接设备。

  • 适用场景:硬件故障排查、BIOS设置调整、操作系统初始安装等。
  • 特点:无需网络依赖,但受地理位置限制,效率较低。

(二)远程操作

        通过网络连接到服务器进行管理,无需物理接触设备。

  • 适用场景:日常运维、配置修改、应用部署等。
  • 特点:依赖网络,灵活性高,支持跨地域管理。

        1、常见远程连接协议

(1)SSH

//(Secure Shell)

  • 功能:加密的远程登录协议,用于安全访问命令行界面。支持加密通信。

  • 端口:默认22。

  • 适用场景:Linux/Unix服务器管理、文件传输(SCP/SFTP)。

(2)Telnet
  • 功能:早期的明文远程登录协议。无加密,安全性低。

  • 端口:默认23。

  • 适用场景:内网设备调试(已逐渐被SSH取代)。

(3)RDP

//(Remote Desktop Protocol)

  • 功能:图形化远程桌面协议,由微软开发。

  • 端口:默认3389。

  • 适用场景:Windows服务器的图形化远程桌面连接,win+R,输入mstsc。

        

(4)VNC

(Virtual Network Computing)

  • 功能:跨平台的图形化远程控制。

  • 端口:通常5900(服务端)或5800(网页访问)。

  • 适用场景:远程技术支持、跨操作系统访问。

(5)FTP/SFTP/FTPS
  • 功能:文件传输协议(FTP)及其安全版本(SFTP基于SSH,FTPS基于SSL)。

  • 端口:FTP(21控制/20数据),SFTP(22),FTPS(990)。

  • 适用场景:安全文件上传下载。


服务器端开启ssh服务,客户端需要ssh工具

2、SSH/SSHD服务

sshd 和 ssh 是 OpenSSH 套件中两个核心组件,共同实现安全的远程登录和文件传输功能。

  • ssh 是客户端工具,用于发起加密连接。

  • sshd 是服务端守护进程,负责监听并处理客户端请求。

协同工作流程

  1. 客户端请求
    用户通过 ssh 命令发起连接请求,指定目标服务器和认证信息(如密钥或密码)。

  2. 服务端响应
    sshd接收到请求后,验证客户端身份,协商加密算法并建立安全通道。

  3. 会话维持
    连接建立后,ssh 和 sshd 持续通信,加密所有传输数据,直至会话终止。

关键配置文件

  • 客户端配置 : ~/.ssh/config  文件权限600,需要root权限

  • 定义连接参数。指定主机别名、端口、密钥文件、用户名等。

  • 修改无需重启服务,立即生效

  • 服务端配置 : /etc/ssh/sshd_config 

  • 控制服务端行为。如监听端口、是否允许密码登录、是否允许 root 登录等。

  • 影响所有通过 SSH 连接到该服务器的用户,修改后需重启 SSH 服务生效

3、查看服务是否打开

    centos的sshd是默认开着的

(1)查看服务运行状态
  • # systemctl status <服务名>

若服务正在运行,输出会显示active (running);若未运行,则显示inactive (dead)

(2)查看进程
  • # ps -elf | grep <服务名或进程关键词>

(3)查看端口
  • # ss -tulnp | grep 端口号        //需要root权限
  • # netstat -tunlp | grep 端口号   //需要root权限

(4)查看日志输出
  • # journalctl -u <服务名> --no-pager   //禁用分页显示

(5)若没有,需要下载并且启用。

        

        


服务器端开启ssh服务,客户端需要ssh工具

4、常见SSH工具

SSH工具是实现SSH协议的客户端或服务器软件,提供加密通信、身份验证和数据传输功能。

  • 图形化工具:通过图形界面实现远程控制,适合操作完整桌面环境。
  • 命令行工具:命令行连接服务器或设备。
  • 图形化与命令行混合工具:结合图形界面和命令行操作,平衡易用性与灵活性。

  • 云平台控制台:云服务商提供的网页版SSH功能,无需本地安装客户端。

图形化工具
  • TeamViewer:跨平台远程控制工具,支持文件传输、会议功能,适合个人和小团队使用。
  • AnyDesk:轻量级远程桌面工具,低延迟,适合临时远程支持。
  • Windows远程桌面(RDP):适用于Windows系统间的远程管理,需配置网络权限。
命令行工具
  • PuTTY:免费开源工具,轻量级,功能简单,仅支持基础SSH/Telnet连接。
  • OpenSSH:Linux/macOS原生SSH工具,支持加密通信和端口转发。
混合型工具
  • Xshell:功能强大的SSH客户端,支持多标签和脚本录制,提供命令行与图形化混合界面。
  • FinalShell:国产工具,集成SSH、SFTP及服务器监控,命令行与图形化功能结合。
  • Termius:跨平台SSH客户端,支持多设备同步,提供命令行和图形化混合操作。
  • MobaXterm:集成了SSH、SFTP、X11服务器,提供多标签管理和图像化工具
  • SecureCRT:商业SSH工具,支持命令行操作和图形化标签管理,适合企业环境。
云平台控制台
  • AWS Systems Manager:无需开放22端口,通过IAM权限直接连接EC2。
  • 阿里云Workbench:支持浏览器内SSH会话,自动处理密钥对。
  • Google Cloud Shell:提供预配置的临时Linux环境。

这里我们使用Xshell讲解(Day13 下了)先建立会话然后点击连接。

接下来先不讲操作,先简单介绍一下数据加密

二、数据加密类型

数据加密:通过将明文数据转换为密文,确保数据在传输或存储过程中的机密性。

算法是公开的标准化方法,而密钥是保密的动态参数。


(一)密钥

密钥是加密和解密过程中的关键参数,通常是一串随机生成的字符或数字。它决定了数据转换的具体方式,即使相同的算法使用不同的密钥,加密结果也会完全不同。

密钥分为对称密钥(加密解密使用同一密钥)和非对称密钥(公钥加密、私钥解密)。

(二)算法

1、对称加密

(1)概念和类型

对称加密使用相同的密钥进行加密和解密。

速度快、效率高,适合大数据量加密,但需确保密钥在分发过程中不被泄露。

  • AES(Advanced Encryption Standard)
    当前最广泛使用的对称加密算法,支持128、192、256位密钥长度,安全性高且性能优异。

  • DES(Data Encryption Standard)
    早期标准,现因密钥长度过短(56位)被认为不安全,已被AES取代。

  • 3DES(Triple DES)
    DES的改进版,通过三次加密提升安全性,但效率较低。

(2)对数据文件加密/解密
  • # openssl enc -e -des -in 待加密的输入文件路径 -out 加密后的输出文件路径
  • # openssl enc -d -des -in 待解密的输入文件路径 -out 解密后的输出文件路径

        openssl enc -e:调用OpenSSL的加密模块,-e加密 -d解密

        -des :指定使用DES(Data Encryption Standard)对称加密算法

        加密解密用的算法需要一样哦

2、非对称加密

(1)概念和类型

非对称加密使用公钥和私钥配对。公钥用于加密,私钥用于解密。

解决了密钥分发问题,但计算复杂度高,通常用于小数据加密或密钥协商。

  • RSA
    基于大整数分解难题,广泛用于数字签名和密钥交换。密钥长度通常为2048位或更长。

  • ECC(Elliptic Curve Cryptography)
    基于椭圆曲线数学,在相同安全强度下密钥长度比RSA更短,适合资源受限场景。

  • Diffie-Hellman
    用于安全密钥交换,允许双方在不安全的通道上生成共享密钥。

  • 应用领域:

  • 数据加解密:公钥加密,私钥解密。例如:加密文件存储

  • 身份认证:例如SSH密钥登录服务器

  • 数字签名:通过私钥对文档或消息生成签名,公钥用于验证签名真实性。

3、哈希加密

哈希加密将数据转换为固定长度的哈希值,具有不可逆性和唯一性。常用于验证数据完整性或存储密码。

  • SHA-256(Secure Hash Algorithm)
    属于SHA-2家族,输出256位哈希值,广泛应用于区块链和数字证书。

  • MD5(Message Digest Algorithm 5)
    生成128位哈希值,因易受碰撞攻击,已不推荐用于安全场景。

  • bcrypt
    专为密码存储设计,内置盐值(salt)和多次迭代,有效抵抗彩虹表攻击。


 四、SSH详解

(一)单Linux主机连接登录

1、发送登录请求

  • # ssh root@服务器IP

2、提示是否要接受主机密钥(实际上虚拟机将自身的公钥发送给客户端,确认客户端是否接受)

        我们在这里的客户端是windows中的Xshell,服务器是虚拟机。

        由于我们点击了接受并保存,所以客户端连接时会将此公钥保存到主机密钥中。后续连接时会对比服务器发送的公钥与客户端本地存储的是否一致。

//这里可以密码认证或者密钥认证

3、这边先解释下密码认证和密钥认证的区别

由图可知:

(1)若是密码登录,我们不需要手动添加服务器(虚拟机)的公钥,只需要我们密码。

(2)若是密钥登录,我们需要提前在服务器(虚拟机)上配置公钥。

4、密码登录就输入密码就好了,这里讲一下密钥登录

(1)要在服务器(虚拟机)上配置公钥,首先需要先获取一对公钥私钥并保存在客户端上。

这里我们会保存一个公钥文件,我们先保存到我们window是系统上的一个地方。

(2)在虚拟机(服务器)上配置公钥。

//这里可以先密码登录Xshell,使用文件传输。把刚刚获得公钥文件传输给虚拟机。

//可以看见是传到/root下了

接下来把传输到/root目录下的公钥文件改名为(authorized_keys)保存在.ssh(自己创建)目录下

root用户和普通用户

(1)root用户

(2)普通用户,这里用test。

这样就把公钥配置到虚拟机上了。使用Xshell密钥登录输入密码(建公钥对那时候设置的)即可。

(二)多个linux主机之间互联

既有服务端功能,又有客户端功能,所以可以实现多个主机之间互联。

  • # ssh 用户名@服务器IP

//首次连接会让确认是否要接受密钥。必须确认哦。exit退出连接。

基于用户的免密互联

(1)客户端生成密钥对

  •  # ssh-keygen -t rsa -b 4096        // 默认密钥保存路径~/.ssh/id_rsa 
  • -t rsa 指定密钥类型为RSA算法
    -b 4096 定义密钥长度为4096位(默认2048位,建议使用更高强度)

        

(2)将客户端公钥复制到远程服务器

  • # ssh-copy-id 用户名@IP地址        
  • 该命令会自动将~/.ssh/id_rsa.pub(或其他默认公钥)追加到远程服务器的~/.ssh/authorized_keys文件中。

以上是以root用户可以互联,若以普通用户连,需要将公钥copy给普通用户。

(三)执行远程命令

  • # ssh 用户名@服务器IP 命令路径

(四)远程拷贝文件

  • # scp 本地文件路径 用户名@服务器IP:远程路径        //从本地拷贝文件到远程服务器
  • # scp  用户名@服务器IP:远程文件路径 本地路径     //从远程服务器拷贝文件到本地

        递归拷贝整个目录加一个参数 -r

  • # cat .ssh/known_hosts        //查看存储的 SSH 客户端连接过的远程主机的公钥指纹。

(四)SSH常用配置

        /etc/ssh/sshd_config

  •  # sudo systemctl restart sshd        //!!~更改完了要重启SSH服务哦

(1)改端口

        

        端口号<1024的端口通常被称为“知名端口”或“系统端口”,这些端口通常预留给系统级服务或特权服务使用。所以<1024的最好不要用。最好用五位数数字

        

        改端口之后,由于默认端口是22,所以ssh root@IP 新端口号   //才可登录

        scp命令要加参数-P。

        

(2)permitrootlogin yes       //默认允许管理员登录。改成no,禁用root登录

        

(3)passwordauthentication no     //禁止密码认证,只能密钥登录
        

        改之前,一定要把服务器的密钥先加上!

(4)关掉DNS 反向解析

         SSH 服务器对客户端 IP 地址执行 DNS 反向解析,可能导致 SSH 连接延迟。

        


  • echo 123> file01        //将文本123内容写入文件file01

  • # history         //会按照时间顺序列出之前输入的命令
http://www.dtcms.com/a/318408.html

相关文章:

  • TMS320F2837xD的CLA加速器开发手册
  • mobaxterm怎么复制全局内容
  • ABP VNext + SQL Server Temporal Tables:审计与时序数据管理
  • 串口通信 day48
  • 华清远见25072班C语言学习day3
  • EXCEL-业绩、目标、达成、同比、环比一图呈现
  • Etcd,真的需要集群部署吗?
  • 消防通道占用识别误报率↓79%!陌讯动态融合算法实战优化
  • 模 板 方 法 模 式
  • 人大金仓数据库逻辑备份与恢复命令
  • PostgreSQL报错“maximum number of prepared transactions reached”原因及高效解决方案解析
  • 百货零售行业数字化蓝图整体规划方案(165页PPT)满分可编辑PPT
  • 构建语义搜索引擎:Weaviate的实践与探索
  • XXL-JOB快速入门
  • cygwin+php教程(swoole扩展+redis扩展)
  • 【完整源码+数据集+部署教程】爬行动物异常检测系统源码和数据集:改进yolo11-GhostDynamicConv
  • 一个php 连sqlserver 目标计算机积极拒绝,无法连接问题的解决
  • 第三节 YOLOv5数据集构成
  • 集成显卡 vs 独立显卡:如何通过设备管理器识别你的GPU?
  • Docker 常用命令介绍
  • 【docker】完整 Dockerfile 示例和构建运行指南
  • 飞浆 paddleocr 识别图片上文字的角度
  • 学习 Android(十四)NDK基础
  • OpenWebUI通过pipeline对接dify的workflow
  • 滑动窗口相关题目
  • VirtualBox 搭建 Linux 虚拟机全流程:Nginx 学习环境前置配置指南
  • ##Anolis OS 8.10 安装oracle19c
  • 广州汽车配件3d打印模型加工厂家-中科米堆CASAIM
  • 【计组】存储系统
  • 3479. 水果成篮 III